// $ANTLR 3.1.2 C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g 2009-06-10 00:51:32

// The variable 'variable' is assigned but its value is never used.
#pragma warning disable 168, 219
// Unreachable code detected.
#pragma warning disable 162
namespace 
	EditeurSyntaxiqueVocal.Languages.LanguageZ.Grammaire.output

{

	using System.Collections.Generic;
	using System.Drawing;


using System;
using Antlr.Runtime;
using IList 		= System.Collections.IList;
using ArrayList 	= System.Collections.ArrayList;
using Stack 		= Antlr.Runtime.Collections.StackList;

using IDictionary	= System.Collections.IDictionary;
using Hashtable 	= System.Collections.Hashtable;

public partial class GrammaireZ2EnuParser : Parser
{
    public static readonly string[] tokenNames = new string[] 
	{
        "<invalid>", 
		"<EOR>", 
		"<DOWN>", 
		"<UP>", 
		"ID", 
		"Sep", 
		"Types", 
		"CSTE", 
		"Autres", 
		"Proc26", 
		"Proc53", 
		"Proc50", 
		"Proc39", 
		"Proc30", 
		"Opr", 
		"Opm", 
		"STRING", 
		"WS", 
		"COMMENT", 
		"Q", 
		"'begin'", 
		"'end'", 
		"';'", 
		"'action'", 
		"'('", 
		"')'", 
		"'function'", 
		"':'", 
		"'dynamic'", 
		"'pointer'", 
		"'pointers'", 
		"'to'", 
		"'of'", 
		"'file'", 
		"'vector'", 
		"'header'", 
		"','", 
		"'buffer'", 
		"'structure'", 
		"'mst'", 
		"'tantque'", 
		"'endwhile'", 
		"'ewhile'", 
		"'if'", 
		"'else'", 
		"'endif'", 
		"'eif'", 
		"'for'", 
		"':='", 
		"'endfor'", 
		"'efor'", 
		"'call'", 
		"'read'", 
		"'write'", 
		"'open'", 
		"'ass_item'", 
		"'['", 
		"']'", 
		"'+'", 
		"'-'", 
		"'or'", 
		"'nil'", 
		"'not'", 
		"'true'", 
		"'false'", 
		"'item'", 
		"'left_son'", 
		"'rigth_son'", 
		"'father'", 
		"'info'", 
		"'value'", 
		"'next'", 
		"'previous'", 
		"'queue_empty'", 
		"'stack_empty'", 
		"'degree'", 
		"'length'", 
		"'alea_string'", 
		"'alea_number'", 
		"'alloc_bloc'", 
		"'end_file'", 
		"'son'", 
		"'infor'", 
		"'mod'", 
		"'min'", 
		"'max'", 
		"'struct'", 
		"'charact'", 
		"'exp'", 
		"'definition'", 
		"'definitions'"
    };

    public const int Types = 6;
    public const int T__68 = 68;
    public const int T__69 = 69;
    public const int T__66 = 66;
    public const int T__67 = 67;
    public const int CSTE = 7;
    public const int T__64 = 64;
    public const int T__29 = 29;
    public const int T__65 = 65;
    public const int T__28 = 28;
    public const int T__62 = 62;
    public const int T__27 = 27;
    public const int Opr = 14;
    public const int T__63 = 63;
    public const int T__26 = 26;
    public const int T__25 = 25;
    public const int T__24 = 24;
    public const int T__23 = 23;
    public const int T__22 = 22;
    public const int T__21 = 21;
    public const int T__20 = 20;
    public const int ID = 4;
    public const int T__61 = 61;
    public const int Proc50 = 11;
    public const int T__60 = 60;
    public const int EOF = -1;
    public const int Opm = 15;
    public const int Proc53 = 10;
    public const int T__55 = 55;
    public const int T__56 = 56;
    public const int T__57 = 57;
    public const int T__58 = 58;
    public const int T__51 = 51;
    public const int T__90 = 90;
    public const int T__52 = 52;
    public const int T__53 = 53;
    public const int T__54 = 54;
    public const int T__59 = 59;
    public const int COMMENT = 18;
    public const int Proc26 = 9;
    public const int T__50 = 50;
    public const int T__42 = 42;
    public const int T__43 = 43;
    public const int T__40 = 40;
    public const int T__41 = 41;
    public const int T__80 = 80;
    public const int T__46 = 46;
    public const int T__81 = 81;
    public const int T__47 = 47;
    public const int T__82 = 82;
    public const int T__44 = 44;
    public const int T__83 = 83;
    public const int T__45 = 45;
    public const int T__48 = 48;
    public const int T__49 = 49;
    public const int Q = 19;
    public const int Proc30 = 13;
    public const int T__85 = 85;
    public const int Proc39 = 12;
    public const int T__84 = 84;
    public const int T__87 = 87;
    public const int T__86 = 86;
    public const int T__89 = 89;
    public const int T__88 = 88;
    public const int Sep = 5;
    public const int T__30 = 30;
    public const int T__31 = 31;
    public const int T__32 = 32;
    public const int WS = 17;
    public const int T__71 = 71;
    public const int T__33 = 33;
    public const int Autres = 8;
    public const int T__72 = 72;
    public const int T__34 = 34;
    public const int T__35 = 35;
    public const int T__70 = 70;
    public const int T__36 = 36;
    public const int T__37 = 37;
    public const int T__38 = 38;
    public const int T__39 = 39;
    public const int T__76 = 76;
    public const int T__75 = 75;
    public const int T__74 = 74;
    public const int T__73 = 73;
    public const int T__79 = 79;
    public const int STRING = 16;
    public const int T__78 = 78;
    public const int T__77 = 77;

    // delegates
    // delegators



        public GrammaireZ2EnuParser(ITokenStream input)
    		: this(input, new RecognizerSharedState()) {
        }

        public GrammaireZ2EnuParser(ITokenStream input, RecognizerSharedState state)
    		: base(input, state) {
            InitializeCyclicDFAs();

             
        }
        

    override public string[] TokenNames {
		get { return GrammaireZ2EnuParser.tokenNames; }
    }

    override public string GrammarFileName {
		get { return "C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g"; }
    }


    	public Dictionary<string, object> ListProgram =  new Dictionary<string, object>();
    	public List<IToken> ListIngore = new List<IToken>();			



    // $ANTLR start "program"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:22:1: program : algoz ;
    public void program() // throws RecognitionException [1]
    {   

         	GlobalObjects.input = input;

        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:26:2: ( algoz )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:26:4: algoz
            {
            	PushFollow(FOLLOW_algoz_in_program65);
            	algoz();
            	state.followingStackPointer--;
            	if (state.failed) return ;

            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "program"


    // $ANTLR start "algoz"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:28:1: algoz : ( (st= definition )? (p= ps )? )? d= 'begin' lisIngnoreEnd e= 'end' ( ';' )? ( (f= fonct | a= act ) ( ';' )? )* ;
    public void algoz() // throws RecognitionException [1]
    {   
        IToken d = null;
        IToken e = null;
        GrammaireZ2EnuParser.definition_return st = default(GrammaireZ2EnuParser.definition_return);

        List<VariableDeclare> p = default(List<VariableDeclare>);




        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:2: ( ( (st= definition )? (p= ps )? )? d= 'begin' lisIngnoreEnd e= 'end' ( ';' )? ( (f= fonct | a= act ) ( ';' )? )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:4: ( (st= definition )? (p= ps )? )? d= 'begin' lisIngnoreEnd e= 'end' ( ';' )? ( (f= fonct | a= act ) ( ';' )? )*
            {
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:4: ( (st= definition )? (p= ps )? )?
            	int alt3 = 2;
            	int LA3_0 = input.LA(1);

            	if ( ((LA3_0 >= ID && LA3_0 <= Q) || (LA3_0 >= 21 && LA3_0 <= 90)) )
            	{
            	    alt3 = 1;
            	}
            	else if ( (LA3_0 == 20) )
            	{
            	    int LA3_2 = input.LA(2);

            	    if ( (synpred3_GrammaireZ2Enu()) )
            	    {
            	        alt3 = 1;
            	    }
            	}
            	switch (alt3) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:5: (st= definition )? (p= ps )?
            	        {
            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:7: (st= definition )?
            	        	int alt1 = 2;
            	        	int LA1_0 = input.LA(1);

            	        	if ( ((LA1_0 >= 89 && LA1_0 <= 90)) )
            	        	{
            	        	    int LA1_1 = input.LA(2);

            	        	    if ( (synpred1_GrammaireZ2Enu()) )
            	        	    {
            	        	        alt1 = 1;
            	        	    }
            	        	}
            	        	switch (alt1) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: st= definition
            	        	        {
            	        	        	PushFollow(FOLLOW_definition_in_algoz82);
            	        	        	st = definition();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}

            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:22: (p= ps )?
            	        	int alt2 = 2;
            	        	int LA2_0 = input.LA(1);

            	        	if ( ((LA2_0 >= ID && LA2_0 <= Q) || (LA2_0 >= 21 && LA2_0 <= 90)) )
            	        	{
            	        	    alt2 = 1;
            	        	}
            	        	switch (alt2) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: p= ps
            	        	        {
            	        	        	PushFollow(FOLLOW_ps_in_algoz88);
            	        	        	p = ps();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}


            	        }
            	        break;

            	}

            	d=(IToken)Match(input,20,FOLLOW_20_in_algoz98); if (state.failed) return ;
            	PushFollow(FOLLOW_lisIngnoreEnd_in_algoz100);
            	lisIngnoreEnd();
            	state.followingStackPointer--;
            	if (state.failed) return ;
            	e=(IToken)Match(input,21,FOLLOW_21_in_algoz104); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:64: ( ';' )?
            	int alt4 = 2;
            	int LA4_0 = input.LA(1);

            	if ( (LA4_0 == 22) )
            	{
            	    alt4 = 1;
            	}
            	switch (alt4) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:65: ';'
            	        {
            	        	Match(input,22,FOLLOW_22_in_algoz107); if (state.failed) return ;

            	        }
            	        break;

            	}

            	if ( (state.backtracking==0) )
            	{
            	  	
            	  	 BaseProgramme baseProgramme;	 
            	  	 List<VariableDeclare> l = new List<VariableDeclare>();
            	  	 if(p != null) l = p;
            	  	 if(st != null) baseProgramme = new BaseProgramme(((st != null) ? ((IToken)st.Start) : null), e, d, l);
            	  	 baseProgramme = new BaseProgramme(new Point(0,0), e, d, l);
            	  	 try{
            	  	 	ListProgram.Add("$", baseProgramme);
            	  	 }catch (ArgumentException ae){
            	  	 }
            	  	
            	}
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:43:3: ( (f= fonct | a= act ) ( ';' )? )*
            	do 
            	{
            	    int alt7 = 2;
            	    int LA7_0 = input.LA(1);

            	    if ( (LA7_0 == 23 || LA7_0 == 26) )
            	    {
            	        alt7 = 1;
            	    }


            	    switch (alt7) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:43:5: (f= fonct | a= act ) ( ';' )?
            			    {
            			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:43:5: (f= fonct | a= act )
            			    	int alt5 = 2;
            			    	int LA5_0 = input.LA(1);

            			    	if ( (LA5_0 == 26) )
            			    	{
            			    	    alt5 = 1;
            			    	}
            			    	else if ( (LA5_0 == 23) )
            			    	{
            			    	    alt5 = 2;
            			    	}
            			    	else 
            			    	{
            			    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            			    	    NoViableAltException nvae_d5s0 =
            			    	        new NoViableAltException("", 5, 0, input);

            			    	    throw nvae_d5s0;
            			    	}
            			    	switch (alt5) 
            			    	{
            			    	    case 1 :
            			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:43:7: f= fonct
            			    	        {
            			    	        	PushFollow(FOLLOW_fonct_in_algoz122);
            			    	        	fonct();
            			    	        	state.followingStackPointer--;
            			    	        	if (state.failed) return ;

            			    	        }
            			    	        break;
            			    	    case 2 :
            			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:43:18: a= act
            			    	        {
            			    	        	PushFollow(FOLLOW_act_in_algoz129);
            			    	        	act();
            			    	        	state.followingStackPointer--;
            			    	        	if (state.failed) return ;

            			    	        }
            			    	        break;

            			    	}

            			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:43:25: ( ';' )?
            			    	int alt6 = 2;
            			    	int LA6_0 = input.LA(1);

            			    	if ( (LA6_0 == 22) )
            			    	{
            			    	    alt6 = 1;
            			    	}
            			    	switch (alt6) 
            			    	{
            			    	    case 1 :
            			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:43:26: ';'
            			    	        {
            			    	        	Match(input,22,FOLLOW_22_in_algoz133); if (state.failed) return ;

            			    	        }
            			    	        break;

            			    	}


            			    }
            			    break;

            			default:
            			    goto loop7;
            	    }
            	} while (true);

            	loop7:
            		;	// Stops C# compiler whining that label 'loop7' has no statements


            }

        }
        catch (Exception ex) 
        {
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "algoz"


    // $ANTLR start "act"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:47:1: act : a= 'action' (id= ID )? ( '(' (i= li )? ')' )? ( ';' )? ( ( definition )? (p= ps )? )? d= 'begin' lisIngnoreEnd e= 'end' ;
    public void act() // throws RecognitionException [1]
    {   
        IToken a = null;
        IToken id = null;
        IToken d = null;
        IToken e = null;
        List<VariableDeclare> i = default(List<VariableDeclare>);

        List<VariableDeclare> p = default(List<VariableDeclare>);


        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:2: (a= 'action' (id= ID )? ( '(' (i= li )? ')' )? ( ';' )? ( ( definition )? (p= ps )? )? d= 'begin' lisIngnoreEnd e= 'end' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:4: a= 'action' (id= ID )? ( '(' (i= li )? ')' )? ( ';' )? ( ( definition )? (p= ps )? )? d= 'begin' lisIngnoreEnd e= 'end'
            {
            	a=(IToken)Match(input,23,FOLLOW_23_in_act164); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:17: (id= ID )?
            	int alt8 = 2;
            	int LA8_0 = input.LA(1);

            	if ( (LA8_0 == ID) )
            	{
            	    int LA8_1 = input.LA(2);

            	    if ( (synpred8_GrammaireZ2Enu()) )
            	    {
            	        alt8 = 1;
            	    }
            	}
            	switch (alt8) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: id= ID
            	        {
            	        	id=(IToken)Match(input,ID,FOLLOW_ID_in_act168); if (state.failed) return ;

            	        }
            	        break;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:23: ( '(' (i= li )? ')' )?
            	int alt10 = 2;
            	alt10 = dfa10.Predict(input);
            	switch (alt10) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:25: '(' (i= li )? ')'
            	        {
            	        	Match(input,24,FOLLOW_24_in_act174); if (state.failed) return ;
            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:30: (i= li )?
            	        	int alt9 = 2;
            	        	int LA9_0 = input.LA(1);

            	        	if ( (LA9_0 == ID) )
            	        	{
            	        	    alt9 = 1;
            	        	}
            	        	switch (alt9) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: i= li
            	        	        {
            	        	        	PushFollow(FOLLOW_li_in_act178);
            	        	        	i = li();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}

            	        	Match(input,25,FOLLOW_25_in_act181); if (state.failed) return ;

            	        }
            	        break;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:42: ( ';' )?
            	int alt11 = 2;
            	int LA11_0 = input.LA(1);

            	if ( (LA11_0 == 22) )
            	{
            	    int LA11_1 = input.LA(2);

            	    if ( (synpred11_GrammaireZ2Enu()) )
            	    {
            	        alt11 = 1;
            	    }
            	}
            	switch (alt11) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:43: ';'
            	        {
            	        	Match(input,22,FOLLOW_22_in_act187); if (state.failed) return ;

            	        }
            	        break;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:49: ( ( definition )? (p= ps )? )?
            	int alt14 = 2;
            	int LA14_0 = input.LA(1);

            	if ( ((LA14_0 >= ID && LA14_0 <= Q) || (LA14_0 >= 21 && LA14_0 <= 90)) )
            	{
            	    alt14 = 1;
            	}
            	else if ( (LA14_0 == 20) )
            	{
            	    int LA14_2 = input.LA(2);

            	    if ( (synpred14_GrammaireZ2Enu()) )
            	    {
            	        alt14 = 1;
            	    }
            	}
            	switch (alt14) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:50: ( definition )? (p= ps )?
            	        {
            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:50: ( definition )?
            	        	int alt12 = 2;
            	        	int LA12_0 = input.LA(1);

            	        	if ( ((LA12_0 >= 89 && LA12_0 <= 90)) )
            	        	{
            	        	    int LA12_1 = input.LA(2);

            	        	    if ( (synpred12_GrammaireZ2Enu()) )
            	        	    {
            	        	        alt12 = 1;
            	        	    }
            	        	}
            	        	switch (alt12) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: definition
            	        	        {
            	        	        	PushFollow(FOLLOW_definition_in_act192);
            	        	        	definition();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}

            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:63: (p= ps )?
            	        	int alt13 = 2;
            	        	int LA13_0 = input.LA(1);

            	        	if ( ((LA13_0 >= ID && LA13_0 <= Q) || (LA13_0 >= 21 && LA13_0 <= 90)) )
            	        	{
            	        	    alt13 = 1;
            	        	}
            	        	switch (alt13) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: p= ps
            	        	        {
            	        	        	PushFollow(FOLLOW_ps_in_act197);
            	        	        	p = ps();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}


            	        }
            	        break;

            	}

            	d=(IToken)Match(input,20,FOLLOW_20_in_act205); if (state.failed) return ;
            	PushFollow(FOLLOW_lisIngnoreEnd_in_act207);
            	lisIngnoreEnd();
            	state.followingStackPointer--;
            	if (state.failed) return ;
            	e=(IToken)Match(input,21,FOLLOW_21_in_act211); if (state.failed) return ;
            	if ( (state.backtracking==0) )
            	{
            	   
            	  	 ActionToken actionToken;
            	  	 IToken t = d;  
            	  	 if(a != null) t = a;
            	  	 if(id == null) id = a;
            	  	 List<VariableDeclare> l = new List<VariableDeclare>();
            	  	 if(p != null) l = p;	 
            	  	 actionToken = new ActionToken(t, e, id, d, l, i);
            	  	 try{
            	  	 	ListProgram.Add(((id != null) ? id.Text : null), actionToken);
            	  	 }catch (ArgumentException ae)
            	  	 {
            	  	 }
            	  	
            	}

            }

        }
        catch (Exception ex) 
        {
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "act"


    // $ANTLR start "fonct"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:66:1: fonct : f= 'function' (id= ID )? '(' (i= li )? ')' ':' (ta= typ )? ( ( definition )? (p= ps )? )? d= 'begin' lisIngnoreEnd e= 'end' ;
    public void fonct() // throws RecognitionException [1]
    {   
        IToken f = null;
        IToken id = null;
        IToken d = null;
        IToken e = null;
        List<VariableDeclare> i = default(List<VariableDeclare>);

        GrammaireZ2EnuParser.typ_return ta = default(GrammaireZ2EnuParser.typ_return);

        List<VariableDeclare> p = default(List<VariableDeclare>);


        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:2: (f= 'function' (id= ID )? '(' (i= li )? ')' ':' (ta= typ )? ( ( definition )? (p= ps )? )? d= 'begin' lisIngnoreEnd e= 'end' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:4: f= 'function' (id= ID )? '(' (i= li )? ')' ':' (ta= typ )? ( ( definition )? (p= ps )? )? d= 'begin' lisIngnoreEnd e= 'end'
            {
            	f=(IToken)Match(input,26,FOLLOW_26_in_fonct238); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:19: (id= ID )?
            	int alt15 = 2;
            	int LA15_0 = input.LA(1);

            	if ( (LA15_0 == ID) )
            	{
            	    alt15 = 1;
            	}
            	switch (alt15) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: id= ID
            	        {
            	        	id=(IToken)Match(input,ID,FOLLOW_ID_in_fonct242); if (state.failed) return ;

            	        }
            	        break;

            	}

            	Match(input,24,FOLLOW_24_in_fonct245); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:29: (i= li )?
            	int alt16 = 2;
            	int LA16_0 = input.LA(1);

            	if ( (LA16_0 == ID) )
            	{
            	    alt16 = 1;
            	}
            	switch (alt16) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: i= li
            	        {
            	        	PushFollow(FOLLOW_li_in_fonct249);
            	        	i = li();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return ;

            	        }
            	        break;

            	}

            	Match(input,25,FOLLOW_25_in_fonct252); if (state.failed) return ;
            	Match(input,27,FOLLOW_27_in_fonct254); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:44: (ta= typ )?
            	int alt17 = 2;
            	alt17 = dfa17.Predict(input);
            	switch (alt17) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: ta= typ
            	        {
            	        	PushFollow(FOLLOW_typ_in_fonct258);
            	        	ta = typ();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return ;

            	        }
            	        break;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:50: ( ( definition )? (p= ps )? )?
            	int alt20 = 2;
            	int LA20_0 = input.LA(1);

            	if ( ((LA20_0 >= ID && LA20_0 <= Q) || (LA20_0 >= 21 && LA20_0 <= 90)) )
            	{
            	    alt20 = 1;
            	}
            	else if ( (LA20_0 == 20) )
            	{
            	    int LA20_2 = input.LA(2);

            	    if ( (synpred20_GrammaireZ2Enu()) )
            	    {
            	        alt20 = 1;
            	    }
            	}
            	switch (alt20) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:52: ( definition )? (p= ps )?
            	        {
            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:52: ( definition )?
            	        	int alt18 = 2;
            	        	int LA18_0 = input.LA(1);

            	        	if ( ((LA18_0 >= 89 && LA18_0 <= 90)) )
            	        	{
            	        	    int LA18_1 = input.LA(2);

            	        	    if ( (synpred18_GrammaireZ2Enu()) )
            	        	    {
            	        	        alt18 = 1;
            	        	    }
            	        	}
            	        	switch (alt18) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: definition
            	        	        {
            	        	        	PushFollow(FOLLOW_definition_in_fonct263);
            	        	        	definition();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}

            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:65: (p= ps )?
            	        	int alt19 = 2;
            	        	int LA19_0 = input.LA(1);

            	        	if ( ((LA19_0 >= ID && LA19_0 <= Q) || (LA19_0 >= 21 && LA19_0 <= 90)) )
            	        	{
            	        	    alt19 = 1;
            	        	}
            	        	switch (alt19) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: p= ps
            	        	        {
            	        	        	PushFollow(FOLLOW_ps_in_fonct268);
            	        	        	p = ps();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return ;

            	        	        }
            	        	        break;

            	        	}


            	        }
            	        break;

            	}

            	d=(IToken)Match(input,20,FOLLOW_20_in_fonct276); if (state.failed) return ;
            	PushFollow(FOLLOW_lisIngnoreEnd_in_fonct278);
            	lisIngnoreEnd();
            	state.followingStackPointer--;
            	if (state.failed) return ;
            	e=(IToken)Match(input,21,FOLLOW_21_in_fonct282); if (state.failed) return ;
            	if ( (state.backtracking==0) )
            	{

            	  	 FonctionToken fonctionToken;
            	  	 IToken t = d;  
            	  	 if(f != null) t = f;
            	  	 if(id == null) id = f;
            	  	 List<VariableDeclare> l = new List<VariableDeclare>();
            	  	 if(p != null) l = p;	 
            	  	 fonctionToken = new FonctionToken(t, e, id, ((ta != null) ? input.ToString((IToken)(ta.Start),(IToken)(ta.Stop)) : null), d, l,i);
            	  	 try{
            	  	 	ListProgram.Add(((id != null) ? id.Text : null), fonctionToken);
            	  	 }catch (ArgumentException ae)
            	  	 {
            	  	 }	 
            	  	
            	}

            }

        }
        catch (Exception ex) 
        {
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "fonct"


    // $ANTLR start "ps"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:85:1: ps returns [List<VariableDeclare> Vars = new List<VariableDeclare>()] : (s1= s ';' ) ( ( definition )? s2= s ';' )* ;
    public List<VariableDeclare> ps() // throws RecognitionException [1]
    {   
        List<VariableDeclare> Vars =  new List<VariableDeclare>();

        GrammaireZ2EnuParser.s_return s1 = default(GrammaireZ2EnuParser.s_return);

        GrammaireZ2EnuParser.s_return s2 = default(GrammaireZ2EnuParser.s_return);


        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:86:2: ( (s1= s ';' ) ( ( definition )? s2= s ';' )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:86:4: (s1= s ';' ) ( ( definition )? s2= s ';' )*
            {
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:86:4: (s1= s ';' )
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:86:5: s1= s ';'
            	{
            		PushFollow(FOLLOW_s_in_ps321);
            		s1 = s();
            		state.followingStackPointer--;
            		if (state.failed) return Vars;
            		if ( (state.backtracking==0) )
            		{
            		  Vars.AddRange(((s1 != null) ? s1.ids : default(List<VariableDeclare>)));
            		}
            		Match(input,22,FOLLOW_22_in_ps329); if (state.failed) return Vars;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:87:4: ( ( definition )? s2= s ';' )*
            	do 
            	{
            	    int alt22 = 2;
            	    int LA22_0 = input.LA(1);

            	    if ( ((LA22_0 >= ID && LA22_0 <= Q) || (LA22_0 >= 21 && LA22_0 <= 90)) )
            	    {
            	        alt22 = 1;
            	    }


            	    switch (alt22) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:87:5: ( definition )? s2= s ';'
            			    {
            			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:87:5: ( definition )?
            			    	int alt21 = 2;
            			    	int LA21_0 = input.LA(1);

            			    	if ( ((LA21_0 >= 89 && LA21_0 <= 90)) )
            			    	{
            			    	    int LA21_1 = input.LA(2);

            			    	    if ( (synpred21_GrammaireZ2Enu()) )
            			    	    {
            			    	        alt21 = 1;
            			    	    }
            			    	}
            			    	switch (alt21) 
            			    	{
            			    	    case 1 :
            			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: definition
            			    	        {
            			    	        	PushFollow(FOLLOW_definition_in_ps337);
            			    	        	definition();
            			    	        	state.followingStackPointer--;
            			    	        	if (state.failed) return Vars;

            			    	        }
            			    	        break;

            			    	}

            			    	PushFollow(FOLLOW_s_in_ps344);
            			    	s2 = s();
            			    	state.followingStackPointer--;
            			    	if (state.failed) return Vars;
            			    	if ( (state.backtracking==0) )
            			    	{
            			    	  Vars.AddRange(((s2 != null) ? s2.ids : default(List<VariableDeclare>)));
            			    	}
            			    	Match(input,22,FOLLOW_22_in_ps352); if (state.failed) return Vars;

            			    }
            			    break;

            			default:
            			    goto loop22;
            	    }
            	} while (true);

            	loop22:
            		;	// Stops C# compiler whining that label 'loop22' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return Vars;
    }
    // $ANTLR end "ps"

    public class s_return : ParserRuleReturnScope
    {
        public List<VariableDeclare> ids = new List<VariableDeclare>();
        public string type;
    };

    // $ANTLR start "s"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:90:1: s returns [List<VariableDeclare> ids = new List<VariableDeclare>(), string type] : ( ( li ( Sep ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) ) | (ii= lisIngnoreBeginSemiColon ) );
    public GrammaireZ2EnuParser.s_return s() // throws RecognitionException [1]
    {   
        GrammaireZ2EnuParser.s_return retval = new GrammaireZ2EnuParser.s_return();
        retval.Start = input.LT(1);

        IToken a1 = null;
        IToken f1 = null;
        GrammaireZ2EnuParser.typ_return t1 = default(GrammaireZ2EnuParser.typ_return);

        GrammaireZ2EnuParser.typ_return t2 = default(GrammaireZ2EnuParser.typ_return);

        GrammaireZ2EnuParser.lisIngnoreBeginSemiColon_return ii = default(GrammaireZ2EnuParser.lisIngnoreBeginSemiColon_return);

        List<VariableDeclare> li1 = default(List<VariableDeclare>);


        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:2: ( ( li ( Sep ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) ) | (ii= lisIngnoreBeginSemiColon ) )
            int alt25 = 2;
            alt25 = dfa25.Predict(input);
            switch (alt25) 
            {
                case 1 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:4: ( li ( Sep ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) )
                    {
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:4: ( li ( Sep ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) )
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:5: li ( Sep ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) )
                    	{
                    		PushFollow(FOLLOW_li_in_s373);
                    		li1 = li();
                    		state.followingStackPointer--;
                    		if (state.failed) return retval;
                    		// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:8: ( Sep )
                    		// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:9: Sep
                    		{
                    			Match(input,Sep,FOLLOW_Sep_in_s376); if (state.failed) return retval;

                    		}

                    		// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:14: (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) )
                    		int alt24 = 2;
                    		int LA24_0 = input.LA(1);

                    		if ( (LA24_0 == Types || LA24_0 == Autres || LA24_0 == 24 || (LA24_0 >= 29 && LA24_0 <= 30) || (LA24_0 >= 33 && LA24_0 <= 34) || (LA24_0 >= 38 && LA24_0 <= 39)) )
                    		{
                    		    alt24 = 1;
                    		}
                    		else if ( (LA24_0 == 23 || LA24_0 == 26) )
                    		{
                    		    alt24 = 2;
                    		}
                    		else 
                    		{
                    		    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    		    NoViableAltException nvae_d24s0 =
                    		        new NoViableAltException("", 24, 0, input);

                    		    throw nvae_d24s0;
                    		}
                    		switch (alt24) 
                    		{
                    		    case 1 :
                    		        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:15: t1= typ
                    		        {
                    		        	PushFollow(FOLLOW_typ_in_s384);
                    		        	t1 = typ();
                    		        	state.followingStackPointer--;
                    		        	if (state.failed) return retval;

                    		        }
                    		        break;
                    		    case 2 :
                    		        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:26: (a1= 'action' | f1= 'function' '(' t2= typ ')' )
                    		        {
                    		        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:26: (a1= 'action' | f1= 'function' '(' t2= typ ')' )
                    		        	int alt23 = 2;
                    		        	int LA23_0 = input.LA(1);

                    		        	if ( (LA23_0 == 23) )
                    		        	{
                    		        	    alt23 = 1;
                    		        	}
                    		        	else if ( (LA23_0 == 26) )
                    		        	{
                    		        	    alt23 = 2;
                    		        	}
                    		        	else 
                    		        	{
                    		        	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    		        	    NoViableAltException nvae_d23s0 =
                    		        	        new NoViableAltException("", 23, 0, input);

                    		        	    throw nvae_d23s0;
                    		        	}
                    		        	switch (alt23) 
                    		        	{
                    		        	    case 1 :
                    		        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:27: a1= 'action'
                    		        	        {
                    		        	        	a1=(IToken)Match(input,23,FOLLOW_23_in_s393); if (state.failed) return retval;

                    		        	        }
                    		        	        break;
                    		        	    case 2 :
                    		        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:43: f1= 'function' '(' t2= typ ')'
                    		        	        {
                    		        	        	f1=(IToken)Match(input,26,FOLLOW_26_in_s401); if (state.failed) return retval;
                    		        	        	Match(input,24,FOLLOW_24_in_s403); if (state.failed) return retval;
                    		        	        	PushFollow(FOLLOW_typ_in_s409);
                    		        	        	t2 = typ();
                    		        	        	state.followingStackPointer--;
                    		        	        	if (state.failed) return retval;
                    		        	        	Match(input,25,FOLLOW_25_in_s411); if (state.failed) return retval;

                    		        	        }
                    		        	        break;

                    		        	}


                    		        }
                    		        break;

                    		}

                    		if ( (state.backtracking==0) )
                    		{

                    		  	   retval.ids =  li1; 
                    		  	   string ty = ((t1 != null) ? input.ToString((IToken)(t1.Start),(IToken)(t1.Stop)) : null)+((a1 != null) ? a1.Text : null)+((f1 != null) ? f1.Text : null)+(t2!=null?"("+((t2 != null) ? input.ToString((IToken)(t2.Start),(IToken)(t2.Stop)) : null)+")":null);
                    		  	   foreach(VariableDeclare vd in li1)
                    		  	   	vd.Type = ty;
                    		  	   retval.type =  ty;
                    		  	  
                    		}

                    	}


                    }
                    break;
                case 2 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:99:6: (ii= lisIngnoreBeginSemiColon )
                    {
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:99:6: (ii= lisIngnoreBeginSemiColon )
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:99:7: ii= lisIngnoreBeginSemiColon
                    	{
                    		PushFollow(FOLLOW_lisIngnoreBeginSemiColon_in_s432);
                    		ii = lisIngnoreBeginSemiColon();
                    		state.followingStackPointer--;
                    		if (state.failed) return retval;
                    		if ( (state.backtracking==0) )
                    		{
                    		   IToken t = ((ii != null) ? ii.d : default(IToken)); t.Text = ((ii != null) ? ii.str : default(string)); ListIngore.Add(t); 
                    		}

                    	}


                    }
                    break;

            }
            retval.Stop = input.LT(-1);

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return retval;
    }
    // $ANTLR end "s"

    public class typ_return : ParserRuleReturnScope
    {
    };

    // $ANTLR start "typ"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:103:1: typ : ( Types | ( structsimple | structcomplexe ) ( 'dynamic' )? | ( ( 'pointer' | 'pointers' ) 'to' )? typecomp ( 'of' typecomp )* ( 'of' structsimple ( 'dynamic' )? | 'of' Types )? | 'file' 'of' ( Types | 'vector' ( CSTE ) 'of' Types | structsimple | structcomplexe ) ( 'header' )? '(' Types ( ',' Types )* ')' 'buffer' li );
    public GrammaireZ2EnuParser.typ_return typ() // throws RecognitionException [1]
    {   
        GrammaireZ2EnuParser.typ_return retval = new GrammaireZ2EnuParser.typ_return();
        retval.Start = input.LT(1);

        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:104:3: ( Types | ( structsimple | structcomplexe ) ( 'dynamic' )? | ( ( 'pointer' | 'pointers' ) 'to' )? typecomp ( 'of' typecomp )* ( 'of' structsimple ( 'dynamic' )? | 'of' Types )? | 'file' 'of' ( Types | 'vector' ( CSTE ) 'of' Types | structsimple | structcomplexe ) ( 'header' )? '(' Types ( ',' Types )* ')' 'buffer' li )
            int alt35 = 4;
            switch ( input.LA(1) ) 
            {
            case Types:
            	{
                alt35 = 1;
                }
                break;
            case 24:
            case 38:
            	{
                alt35 = 2;
                }
                break;
            case Autres:
            case 29:
            case 30:
            case 34:
            case 39:
            	{
                alt35 = 3;
                }
                break;
            case 33:
            	{
                alt35 = 4;
                }
                break;
            	default:
            	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	    NoViableAltException nvae_d35s0 =
            	        new NoViableAltException("", 35, 0, input);

            	    throw nvae_d35s0;
            }

            switch (alt35) 
            {
                case 1 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:104:5: Types
                    {
                    	Match(input,Types,FOLLOW_Types_in_typ452); if (state.failed) return retval;

                    }
                    break;
                case 2 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:105:4: ( structsimple | structcomplexe ) ( 'dynamic' )?
                    {
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:105:4: ( structsimple | structcomplexe )
                    	int alt26 = 2;
                    	alt26 = dfa26.Predict(input);
                    	switch (alt26) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:105:6: structsimple
                    	        {
                    	        	PushFollow(FOLLOW_structsimple_in_typ461);
                    	        	structsimple();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;

                    	        }
                    	        break;
                    	    case 2 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:105:21: structcomplexe
                    	        {
                    	        	PushFollow(FOLLOW_structcomplexe_in_typ465);
                    	        	structcomplexe();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;

                    	        }
                    	        break;

                    	}

                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:105:38: ( 'dynamic' )?
                    	int alt27 = 2;
                    	int LA27_0 = input.LA(1);

                    	if ( (LA27_0 == 28) )
                    	{
                    	    int LA27_1 = input.LA(2);

                    	    if ( (synpred28_GrammaireZ2Enu()) )
                    	    {
                    	        alt27 = 1;
                    	    }
                    	}
                    	switch (alt27) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: 'dynamic'
                    	        {
                    	        	Match(input,28,FOLLOW_28_in_typ469); if (state.failed) return retval;

                    	        }
                    	        break;

                    	}


                    }
                    break;
                case 3 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:4: ( ( 'pointer' | 'pointers' ) 'to' )? typecomp ( 'of' typecomp )* ( 'of' structsimple ( 'dynamic' )? | 'of' Types )?
                    {
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:4: ( ( 'pointer' | 'pointers' ) 'to' )?
                    	int alt28 = 2;
                    	int LA28_0 = input.LA(1);

                    	if ( ((LA28_0 >= 29 && LA28_0 <= 30)) )
                    	{
                    	    alt28 = 1;
                    	}
                    	switch (alt28) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:5: ( 'pointer' | 'pointers' ) 'to'
                    	        {
                    	        	if ( (input.LA(1) >= 29 && input.LA(1) <= 30) ) 
                    	        	{
                    	        	    input.Consume();
                    	        	    state.errorRecovery = false;state.failed = false;
                    	        	}
                    	        	else 
                    	        	{
                    	        	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	        	    MismatchedSetException mse = new MismatchedSetException(null,input);
                    	        	    throw mse;
                    	        	}

                    	        	Match(input,31,FOLLOW_31_in_typ486); if (state.failed) return retval;

                    	        }
                    	        break;

                    	}

                    	PushFollow(FOLLOW_typecomp_in_typ490);
                    	typecomp();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:46: ( 'of' typecomp )*
                    	do 
                    	{
                    	    int alt29 = 2;
                    	    alt29 = dfa29.Predict(input);
                    	    switch (alt29) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:47: 'of' typecomp
                    			    {
                    			    	Match(input,32,FOLLOW_32_in_typ493); if (state.failed) return retval;
                    			    	PushFollow(FOLLOW_typecomp_in_typ495);
                    			    	typecomp();
                    			    	state.followingStackPointer--;
                    			    	if (state.failed) return retval;

                    			    }
                    			    break;

                    			default:
                    			    goto loop29;
                    	    }
                    	} while (true);

                    	loop29:
                    		;	// Stops C# compiler whining that label 'loop29' has no statements

                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:65: ( 'of' structsimple ( 'dynamic' )? | 'of' Types )?
                    	int alt31 = 3;
                    	alt31 = dfa31.Predict(input);
                    	switch (alt31) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:66: 'of' structsimple ( 'dynamic' )?
                    	        {
                    	        	Match(input,32,FOLLOW_32_in_typ502); if (state.failed) return retval;
                    	        	PushFollow(FOLLOW_structsimple_in_typ504);
                    	        	structsimple();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:84: ( 'dynamic' )?
                    	        	int alt30 = 2;
                    	        	int LA30_0 = input.LA(1);

                    	        	if ( (LA30_0 == 28) )
                    	        	{
                    	        	    int LA30_1 = input.LA(2);

                    	        	    if ( (synpred33_GrammaireZ2Enu()) )
                    	        	    {
                    	        	        alt30 = 1;
                    	        	    }
                    	        	}
                    	        	switch (alt30) 
                    	        	{
                    	        	    case 1 :
                    	        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: 'dynamic'
                    	        	        {
                    	        	        	Match(input,28,FOLLOW_28_in_typ506); if (state.failed) return retval;

                    	        	        }
                    	        	        break;

                    	        	}


                    	        }
                    	        break;
                    	    case 2 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:97: 'of' Types
                    	        {
                    	        	Match(input,32,FOLLOW_32_in_typ511); if (state.failed) return retval;
                    	        	Match(input,Types,FOLLOW_Types_in_typ513); if (state.failed) return retval;

                    	        }
                    	        break;

                    	}


                    }
                    break;
                case 4 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:4: 'file' 'of' ( Types | 'vector' ( CSTE ) 'of' Types | structsimple | structcomplexe ) ( 'header' )? '(' Types ( ',' Types )* ')' 'buffer' li
                    {
                    	Match(input,33,FOLLOW_33_in_typ523); if (state.failed) return retval;
                    	Match(input,32,FOLLOW_32_in_typ525); if (state.failed) return retval;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:16: ( Types | 'vector' ( CSTE ) 'of' Types | structsimple | structcomplexe )
                    	int alt32 = 4;
                    	alt32 = dfa32.Predict(input);
                    	switch (alt32) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:18: Types
                    	        {
                    	        	Match(input,Types,FOLLOW_Types_in_typ529); if (state.failed) return retval;

                    	        }
                    	        break;
                    	    case 2 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:26: 'vector' ( CSTE ) 'of' Types
                    	        {
                    	        	Match(input,34,FOLLOW_34_in_typ533); if (state.failed) return retval;
                    	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:34: ( CSTE )
                    	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:35: CSTE
                    	        	{
                    	        		Match(input,CSTE,FOLLOW_CSTE_in_typ535); if (state.failed) return retval;

                    	        	}

                    	        	Match(input,32,FOLLOW_32_in_typ538); if (state.failed) return retval;
                    	        	Match(input,Types,FOLLOW_Types_in_typ540); if (state.failed) return retval;

                    	        }
                    	        break;
                    	    case 3 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:55: structsimple
                    	        {
                    	        	PushFollow(FOLLOW_structsimple_in_typ545);
                    	        	structsimple();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;

                    	        }
                    	        break;
                    	    case 4 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:70: structcomplexe
                    	        {
                    	        	PushFollow(FOLLOW_structcomplexe_in_typ549);
                    	        	structcomplexe();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;

                    	        }
                    	        break;

                    	}

                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:87: ( 'header' )?
                    	int alt33 = 2;
                    	int LA33_0 = input.LA(1);

                    	if ( (LA33_0 == 35) )
                    	{
                    	    alt33 = 1;
                    	}
                    	switch (alt33) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: 'header'
                    	        {
                    	        	Match(input,35,FOLLOW_35_in_typ553); if (state.failed) return retval;

                    	        }
                    	        break;

                    	}

                    	Match(input,24,FOLLOW_24_in_typ556); if (state.failed) return retval;
                    	Match(input,Types,FOLLOW_Types_in_typ558); if (state.failed) return retval;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:107: ( ',' Types )*
                    	do 
                    	{
                    	    int alt34 = 2;
                    	    int LA34_0 = input.LA(1);

                    	    if ( (LA34_0 == 36) )
                    	    {
                    	        alt34 = 1;
                    	    }


                    	    switch (alt34) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:109: ',' Types
                    			    {
                    			    	Match(input,36,FOLLOW_36_in_typ562); if (state.failed) return retval;
                    			    	Match(input,Types,FOLLOW_Types_in_typ564); if (state.failed) return retval;

                    			    }
                    			    break;

                    			default:
                    			    goto loop34;
                    	    }
                    	} while (true);

                    	loop34:
                    		;	// Stops C# compiler whining that label 'loop34' has no statements

                    	Match(input,25,FOLLOW_25_in_typ568); if (state.failed) return retval;
                    	Match(input,37,FOLLOW_37_in_typ570); if (state.failed) return retval;
                    	PushFollow(FOLLOW_li_in_typ572);
                    	li();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;

                    }
                    break;

            }
            retval.Stop = input.LT(-1);

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return retval;
    }
    // $ANTLR end "typ"


    // $ANTLR start "structsimple"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:109:1: structsimple : ( 'structure' )? '(' Types ( ',' Types )* ')' ;
    public void structsimple() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:110:3: ( ( 'structure' )? '(' Types ( ',' Types )* ')' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:110:5: ( 'structure' )? '(' Types ( ',' Types )* ')'
            {
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:110:5: ( 'structure' )?
            	int alt36 = 2;
            	int LA36_0 = input.LA(1);

            	if ( (LA36_0 == 38) )
            	{
            	    alt36 = 1;
            	}
            	switch (alt36) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: 'structure'
            	        {
            	        	Match(input,38,FOLLOW_38_in_structsimple588); if (state.failed) return ;

            	        }
            	        break;

            	}

            	Match(input,24,FOLLOW_24_in_structsimple591); if (state.failed) return ;
            	Match(input,Types,FOLLOW_Types_in_structsimple593); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:110:28: ( ',' Types )*
            	do 
            	{
            	    int alt37 = 2;
            	    int LA37_0 = input.LA(1);

            	    if ( (LA37_0 == 36) )
            	    {
            	        alt37 = 1;
            	    }


            	    switch (alt37) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:110:30: ',' Types
            			    {
            			    	Match(input,36,FOLLOW_36_in_structsimple597); if (state.failed) return ;
            			    	Match(input,Types,FOLLOW_Types_in_structsimple599); if (state.failed) return ;

            			    }
            			    break;

            			default:
            			    goto loop37;
            	    }
            	} while (true);

            	loop37:
            		;	// Stops C# compiler whining that label 'loop37' has no statements

            	Match(input,25,FOLLOW_25_in_structsimple604); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "structsimple"


    // $ANTLR start "structcomplexe"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:112:1: structcomplexe : ( 'structure' )? '(' ( Types | 'vector' ( CSTE ) 'of' Types ) ( ',' ( Types | 'vector' ( CSTE ) 'of' Types ) )* ')' ;
    public void structcomplexe() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:3: ( ( 'structure' )? '(' ( Types | 'vector' ( CSTE ) 'of' Types ) ( ',' ( Types | 'vector' ( CSTE ) 'of' Types ) )* ')' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:5: ( 'structure' )? '(' ( Types | 'vector' ( CSTE ) 'of' Types ) ( ',' ( Types | 'vector' ( CSTE ) 'of' Types ) )* ')'
            {
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:5: ( 'structure' )?
            	int alt38 = 2;
            	int LA38_0 = input.LA(1);

            	if ( (LA38_0 == 38) )
            	{
            	    alt38 = 1;
            	}
            	switch (alt38) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: 'structure'
            	        {
            	        	Match(input,38,FOLLOW_38_in_structcomplexe615); if (state.failed) return ;

            	        }
            	        break;

            	}

            	Match(input,24,FOLLOW_24_in_structcomplexe618); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:22: ( Types | 'vector' ( CSTE ) 'of' Types )
            	int alt39 = 2;
            	int LA39_0 = input.LA(1);

            	if ( (LA39_0 == Types) )
            	{
            	    alt39 = 1;
            	}
            	else if ( (LA39_0 == 34) )
            	{
            	    alt39 = 2;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    NoViableAltException nvae_d39s0 =
            	        new NoViableAltException("", 39, 0, input);

            	    throw nvae_d39s0;
            	}
            	switch (alt39) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:24: Types
            	        {
            	        	Match(input,Types,FOLLOW_Types_in_structcomplexe622); if (state.failed) return ;

            	        }
            	        break;
            	    case 2 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:32: 'vector' ( CSTE ) 'of' Types
            	        {
            	        	Match(input,34,FOLLOW_34_in_structcomplexe626); if (state.failed) return ;
            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:41: ( CSTE )
            	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:42: CSTE
            	        	{
            	        		Match(input,CSTE,FOLLOW_CSTE_in_structcomplexe629); if (state.failed) return ;

            	        	}

            	        	Match(input,32,FOLLOW_32_in_structcomplexe632); if (state.failed) return ;
            	        	Match(input,Types,FOLLOW_Types_in_structcomplexe634); if (state.failed) return ;

            	        }
            	        break;

            	}

            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:61: ( ',' ( Types | 'vector' ( CSTE ) 'of' Types ) )*
            	do 
            	{
            	    int alt41 = 2;
            	    int LA41_0 = input.LA(1);

            	    if ( (LA41_0 == 36) )
            	    {
            	        alt41 = 1;
            	    }


            	    switch (alt41) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:63: ',' ( Types | 'vector' ( CSTE ) 'of' Types )
            			    {
            			    	Match(input,36,FOLLOW_36_in_structcomplexe640); if (state.failed) return ;
            			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:67: ( Types | 'vector' ( CSTE ) 'of' Types )
            			    	int alt40 = 2;
            			    	int LA40_0 = input.LA(1);

            			    	if ( (LA40_0 == Types) )
            			    	{
            			    	    alt40 = 1;
            			    	}
            			    	else if ( (LA40_0 == 34) )
            			    	{
            			    	    alt40 = 2;
            			    	}
            			    	else 
            			    	{
            			    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            			    	    NoViableAltException nvae_d40s0 =
            			    	        new NoViableAltException("", 40, 0, input);

            			    	    throw nvae_d40s0;
            			    	}
            			    	switch (alt40) 
            			    	{
            			    	    case 1 :
            			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:69: Types
            			    	        {
            			    	        	Match(input,Types,FOLLOW_Types_in_structcomplexe644); if (state.failed) return ;

            			    	        }
            			    	        break;
            			    	    case 2 :
            			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:77: 'vector' ( CSTE ) 'of' Types
            			    	        {
            			    	        	Match(input,34,FOLLOW_34_in_structcomplexe648); if (state.failed) return ;
            			    	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:86: ( CSTE )
            			    	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:113:87: CSTE
            			    	        	{
            			    	        		Match(input,CSTE,FOLLOW_CSTE_in_structcomplexe651); if (state.failed) return ;

            			    	        	}

            			    	        	Match(input,32,FOLLOW_32_in_structcomplexe654); if (state.failed) return ;
            			    	        	Match(input,Types,FOLLOW_Types_in_structcomplexe656); if (state.failed) return ;

            			    	        }
            			    	        break;

            			    	}


            			    }
            			    break;

            			default:
            			    goto loop41;
            	    }
            	} while (true);

            	loop41:
            		;	// Stops C# compiler whining that label 'loop41' has no statements

            	Match(input,25,FOLLOW_25_in_structcomplexe664); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "structcomplexe"


    // $ANTLR start "typecomp"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:115:1: typecomp : ( 'mst' ( CSTE ) | 'vector' '(' listecste ')' | Autres );
    public void typecomp() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:116:3: ( 'mst' ( CSTE ) | 'vector' '(' listecste ')' | Autres )
            int alt42 = 3;
            switch ( input.LA(1) ) 
            {
            case 39:
            	{
                alt42 = 1;
                }
                break;
            case 34:
            	{
                alt42 = 2;
                }
                break;
            case Autres:
            	{
                alt42 = 3;
                }
                break;
            	default:
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    NoViableAltException nvae_d42s0 =
            	        new NoViableAltException("", 42, 0, input);

            	    throw nvae_d42s0;
            }

            switch (alt42) 
            {
                case 1 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:116:5: 'mst' ( CSTE )
                    {
                    	Match(input,39,FOLLOW_39_in_typecomp677); if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:116:11: ( CSTE )
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:116:12: CSTE
                    	{
                    		Match(input,CSTE,FOLLOW_CSTE_in_typecomp680); if (state.failed) return ;

                    	}


                    }
                    break;
                case 2 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:116:20: 'vector' '(' listecste ')'
                    {
                    	Match(input,34,FOLLOW_34_in_typecomp685); if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_typecomp687); if (state.failed) return ;
                    	PushFollow(FOLLOW_listecste_in_typecomp689);
                    	listecste();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_typecomp691); if (state.failed) return ;

                    }
                    break;
                case 3 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:116:49: Autres
                    {
                    	Match(input,Autres,FOLLOW_Autres_in_typecomp695); if (state.failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "typecomp"


    // $ANTLR start "listecste"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:130:1: listecste : CSTE ( ',' CSTE )* ;
    public void listecste() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:131:3: ( CSTE ( ',' CSTE )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:131:5: CSTE ( ',' CSTE )*
            {
            	Match(input,CSTE,FOLLOW_CSTE_in_listecste829); if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:131:10: ( ',' CSTE )*
            	do 
            	{
            	    int alt43 = 2;
            	    int LA43_0 = input.LA(1);

            	    if ( (LA43_0 == 36) )
            	    {
            	        alt43 = 1;
            	    }


            	    switch (alt43) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:131:12: ',' CSTE
            			    {
            			    	Match(input,36,FOLLOW_36_in_listecste833); if (state.failed) return ;
            			    	Match(input,CSTE,FOLLOW_CSTE_in_listecste835); if (state.failed) return ;

            			    }
            			    break;

            			default:
            			    goto loop43;
            	    }
            	} while (true);

            	loop43:
            		;	// Stops C# compiler whining that label 'loop43' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "listecste"


    // $ANTLR start "li"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:133:1: li returns [List<VariableDeclare> ids = new List<VariableDeclare>()] : i1= ID ( ',' i2= ID )* ;
    public List<VariableDeclare> li() // throws RecognitionException [1]
    {   
        List<VariableDeclare> ids =  new List<VariableDeclare>();

        IToken i1 = null;
        IToken i2 = null;

        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:134:3: (i1= ID ( ',' i2= ID )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:134:5: i1= ID ( ',' i2= ID )*
            {
            	i1=(IToken)Match(input,ID,FOLLOW_ID_in_li858); if (state.failed) return ids;
            	if ( (state.backtracking==0) )
            	{
            	  ids.Add(new VariableDeclare(i1));
            	}
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:134:48: ( ',' i2= ID )*
            	do 
            	{
            	    int alt44 = 2;
            	    int LA44_0 = input.LA(1);

            	    if ( (LA44_0 == 36) )
            	    {
            	        int LA44_2 = input.LA(2);

            	        if ( (LA44_2 == ID) )
            	        {
            	            int LA44_3 = input.LA(3);

            	            if ( (synpred51_GrammaireZ2Enu()) )
            	            {
            	                alt44 = 1;
            	            }


            	        }


            	    }


            	    switch (alt44) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:134:50: ',' i2= ID
            			    {
            			    	Match(input,36,FOLLOW_36_in_li865); if (state.failed) return ids;
            			    	i2=(IToken)Match(input,ID,FOLLOW_ID_in_li869); if (state.failed) return ids;
            			    	if ( (state.backtracking==0) )
            			    	{
            			    	  ids.Add(new VariableDeclare(i2));
            			    	}

            			    }
            			    break;

            			default:
            			    goto loop44;
            	    }
            	} while (true);

            	loop44:
            		;	// Stops C# compiler whining that label 'loop44' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ids;
    }
    // $ANTLR end "li"


    // $ANTLR start "lis"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:136:1: lis : inst ( ( ';' )? inst )* ;
    public void lis() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:137:3: ( inst ( ( ';' )? inst )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:137:5: inst ( ( ';' )? inst )*
            {
            	PushFollow(FOLLOW_inst_in_lis885);
            	inst();
            	state.followingStackPointer--;
            	if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:137:10: ( ( ';' )? inst )*
            	do 
            	{
            	    int alt46 = 2;
            	    int LA46_0 = input.LA(1);

            	    if ( (LA46_0 == ID || (LA46_0 >= Proc26 && LA46_0 <= Proc30) || LA46_0 == 22 || LA46_0 == 40 || LA46_0 == 43 || LA46_0 == 47 || (LA46_0 >= 51 && LA46_0 <= 55)) )
            	    {
            	        alt46 = 1;
            	    }


            	    switch (alt46) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:137:12: ( ';' )? inst
            			    {
            			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:137:12: ( ';' )?
            			    	int alt45 = 2;
            			    	int LA45_0 = input.LA(1);

            			    	if ( (LA45_0 == 22) )
            			    	{
            			    	    alt45 = 1;
            			    	}
            			    	switch (alt45) 
            			    	{
            			    	    case 1 :
            			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: ';'
            			    	        {
            			    	        	Match(input,22,FOLLOW_22_in_lis889); if (state.failed) return ;

            			    	        }
            			    	        break;

            			    	}

            			    	PushFollow(FOLLOW_inst_in_lis892);
            			    	inst();
            			    	state.followingStackPointer--;
            			    	if (state.failed) return ;

            			    }
            			    break;

            			default:
            			    goto loop46;
            	    }
            	} while (true);

            	loop46:
            		;	// Stops C# compiler whining that label 'loop46' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "lis"


    // $ANTLR start "inst"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:139:1: inst : ( ( 'tantque' exp ( ':' )? lis ( 'endwhile' | 'ewhile' ) ) | ( 'if' exp ( ':' )? lis ( 'else' lis )? ( 'endif' | 'eif' ) ) | 'for' ID ':=' exp ',' exp ( ',' exp )? ( ':' )? lis ( 'endfor' | 'efor' ) | ID ':=' exp | 'call' ID ( '(' exp ( ',' exp )* ')' )? | 'read' '(' ID ( ',' ID )* ')' | 'write' '(' exp ( ',' exp )* ')' | 'open' '(' exp ',' exp ',' exp ')' | 'ass_item' '(' exp '[' exp ( ',' exp )* ']' ',' exp ')' | Proc26 '(' exp ')' | Proc53 '(' ID ',' ID ')' | Proc50 '(' exp ',' exp ')' | Proc39 '(' ID ',' '[' ( exp | '[' exp ( ',' exp )* ']' ) ( ',' ( exp | '[' exp ( ',' exp )* ']' ) )* ']' ')' | Proc30 '(' exp ',' exp ',' exp ')' );
    public void inst() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:140:3: ( ( 'tantque' exp ( ':' )? lis ( 'endwhile' | 'ewhile' ) ) | ( 'if' exp ( ':' )? lis ( 'else' lis )? ( 'endif' | 'eif' ) ) | 'for' ID ':=' exp ',' exp ( ',' exp )? ( ':' )? lis ( 'endfor' | 'efor' ) | ID ':=' exp | 'call' ID ( '(' exp ( ',' exp )* ')' )? | 'read' '(' ID ( ',' ID )* ')' | 'write' '(' exp ( ',' exp )* ')' | 'open' '(' exp ',' exp ',' exp ')' | 'ass_item' '(' exp '[' exp ( ',' exp )* ']' ',' exp ')' | Proc26 '(' exp ')' | Proc53 '(' ID ',' ID ')' | Proc50 '(' exp ',' exp ')' | Proc39 '(' ID ',' '[' ( exp | '[' exp ( ',' exp )* ']' ) ( ',' ( exp | '[' exp ( ',' exp )* ']' ) )* ']' ')' | Proc30 '(' exp ',' exp ',' exp ')' )
            int alt62 = 14;
            switch ( input.LA(1) ) 
            {
            case 40:
            	{
                alt62 = 1;
                }
                break;
            case 43:
            	{
                alt62 = 2;
                }
                break;
            case 47:
            	{
                alt62 = 3;
                }
                break;
            case ID:
            	{
                alt62 = 4;
                }
                break;
            case 51:
            	{
                alt62 = 5;
                }
                break;
            case 52:
            	{
                alt62 = 6;
                }
                break;
            case 53:
            	{
                alt62 = 7;
                }
                break;
            case 54:
            	{
                alt62 = 8;
                }
                break;
            case 55:
            	{
                alt62 = 9;
                }
                break;
            case Proc26:
            	{
                alt62 = 10;
                }
                break;
            case Proc53:
            	{
                alt62 = 11;
                }
                break;
            case Proc50:
            	{
                alt62 = 12;
                }
                break;
            case Proc39:
            	{
                alt62 = 13;
                }
                break;
            case Proc30:
            	{
                alt62 = 14;
                }
                break;
            	default:
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    NoViableAltException nvae_d62s0 =
            	        new NoViableAltException("", 62, 0, input);

            	    throw nvae_d62s0;
            }

            switch (alt62) 
            {
                case 1 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:140:5: ( 'tantque' exp ( ':' )? lis ( 'endwhile' | 'ewhile' ) )
                    {
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:140:5: ( 'tantque' exp ( ':' )? lis ( 'endwhile' | 'ewhile' ) )
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:140:6: 'tantque' exp ( ':' )? lis ( 'endwhile' | 'ewhile' )
                    	{
                    		Match(input,40,FOLLOW_40_in_inst913); if (state.failed) return ;
                    		PushFollow(FOLLOW_exp_in_inst915);
                    		exp();
                    		state.followingStackPointer--;
                    		if (state.failed) return ;
                    		// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:140:20: ( ':' )?
                    		int alt47 = 2;
                    		int LA47_0 = input.LA(1);

                    		if ( (LA47_0 == 27) )
                    		{
                    		    alt47 = 1;
                    		}
                    		switch (alt47) 
                    		{
                    		    case 1 :
                    		        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: ':'
                    		        {
                    		        	Match(input,27,FOLLOW_27_in_inst917); if (state.failed) return ;

                    		        }
                    		        break;

                    		}

                    		PushFollow(FOLLOW_lis_in_inst921);
                    		lis();
                    		state.followingStackPointer--;
                    		if (state.failed) return ;
                    		if ( (input.LA(1) >= 41 && input.LA(1) <= 42) ) 
                    		{
                    		    input.Consume();
                    		    state.errorRecovery = false;state.failed = false;
                    		}
                    		else 
                    		{
                    		    if ( state.backtracking > 0 ) {state.failed = true; return ;}
                    		    MismatchedSetException mse = new MismatchedSetException(null,input);
                    		    throw mse;
                    		}


                    	}


                    }
                    break;
                case 2 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:141:3: ( 'if' exp ( ':' )? lis ( 'else' lis )? ( 'endif' | 'eif' ) )
                    {
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:141:3: ( 'if' exp ( ':' )? lis ( 'else' lis )? ( 'endif' | 'eif' ) )
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:141:4: 'if' exp ( ':' )? lis ( 'else' lis )? ( 'endif' | 'eif' )
                    	{
                    		Match(input,43,FOLLOW_43_in_inst936); if (state.failed) return ;
                    		PushFollow(FOLLOW_exp_in_inst938);
                    		exp();
                    		state.followingStackPointer--;
                    		if (state.failed) return ;
                    		// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:141:13: ( ':' )?
                    		int alt48 = 2;
                    		int LA48_0 = input.LA(1);

                    		if ( (LA48_0 == 27) )
                    		{
                    		    alt48 = 1;
                    		}
                    		switch (alt48) 
                    		{
                    		    case 1 :
                    		        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: ':'
                    		        {
                    		        	Match(input,27,FOLLOW_27_in_inst940); if (state.failed) return ;

                    		        }
                    		        break;

                    		}

                    		PushFollow(FOLLOW_lis_in_inst943);
                    		lis();
                    		state.followingStackPointer--;
                    		if (state.failed) return ;
                    		// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:141:22: ( 'else' lis )?
                    		int alt49 = 2;
                    		int LA49_0 = input.LA(1);

                    		if ( (LA49_0 == 44) )
                    		{
                    		    alt49 = 1;
                    		}
                    		switch (alt49) 
                    		{
                    		    case 1 :
                    		        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:141:23: 'else' lis
                    		        {
                    		        	Match(input,44,FOLLOW_44_in_inst946); if (state.failed) return ;
                    		        	PushFollow(FOLLOW_lis_in_inst949);
                    		        	lis();
                    		        	state.followingStackPointer--;
                    		        	if (state.failed) return ;

                    		        }
                    		        break;

                    		}

                    		if ( (input.LA(1) >= 45 && input.LA(1) <= 46) ) 
                    		{
                    		    input.Consume();
                    		    state.errorRecovery = false;state.failed = false;
                    		}
                    		else 
                    		{
                    		    if ( state.backtracking > 0 ) {state.failed = true; return ;}
                    		    MismatchedSetException mse = new MismatchedSetException(null,input);
                    		    throw mse;
                    		}


                    	}


                    }
                    break;
                case 3 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:142:3: 'for' ID ':=' exp ',' exp ( ',' exp )? ( ':' )? lis ( 'endfor' | 'efor' )
                    {
                    	Match(input,47,FOLLOW_47_in_inst965); if (state.failed) return ;
                    	Match(input,ID,FOLLOW_ID_in_inst967); if (state.failed) return ;
                    	Match(input,48,FOLLOW_48_in_inst969); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst971);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,36,FOLLOW_36_in_inst973); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst975);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:142:29: ( ',' exp )?
                    	int alt50 = 2;
                    	int LA50_0 = input.LA(1);

                    	if ( (LA50_0 == 36) )
                    	{
                    	    alt50 = 1;
                    	}
                    	switch (alt50) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:142:30: ',' exp
                    	        {
                    	        	Match(input,36,FOLLOW_36_in_inst978); if (state.failed) return ;
                    	        	PushFollow(FOLLOW_exp_in_inst980);
                    	        	exp();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return ;

                    	        }
                    	        break;

                    	}

                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:142:40: ( ':' )?
                    	int alt51 = 2;
                    	int LA51_0 = input.LA(1);

                    	if ( (LA51_0 == 27) )
                    	{
                    	    alt51 = 1;
                    	}
                    	switch (alt51) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: ':'
                    	        {
                    	        	Match(input,27,FOLLOW_27_in_inst984); if (state.failed) return ;

                    	        }
                    	        break;

                    	}

                    	PushFollow(FOLLOW_lis_in_inst988);
                    	lis();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	if ( (input.LA(1) >= 49 && input.LA(1) <= 50) ) 
                    	{
                    	    input.Consume();
                    	    state.errorRecovery = false;state.failed = false;
                    	}
                    	else 
                    	{
                    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
                    	    throw mse;
                    	}


                    }
                    break;
                case 4 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:143:3: ID ':=' exp
                    {
                    	Match(input,ID,FOLLOW_ID_in_inst1003); if (state.failed) return ;
                    	Match(input,48,FOLLOW_48_in_inst1005); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1007);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;

                    }
                    break;
                case 5 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:144:3: 'call' ID ( '(' exp ( ',' exp )* ')' )?
                    {
                    	Match(input,51,FOLLOW_51_in_inst1013); if (state.failed) return ;
                    	Match(input,ID,FOLLOW_ID_in_inst1015); if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:144:13: ( '(' exp ( ',' exp )* ')' )?
                    	int alt53 = 2;
                    	int LA53_0 = input.LA(1);

                    	if ( (LA53_0 == 24) )
                    	{
                    	    alt53 = 1;
                    	}
                    	switch (alt53) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:144:14: '(' exp ( ',' exp )* ')'
                    	        {
                    	        	Match(input,24,FOLLOW_24_in_inst1018); if (state.failed) return ;
                    	        	PushFollow(FOLLOW_exp_in_inst1019);
                    	        	exp();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return ;
                    	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:144:21: ( ',' exp )*
                    	        	do 
                    	        	{
                    	        	    int alt52 = 2;
                    	        	    int LA52_0 = input.LA(1);

                    	        	    if ( (LA52_0 == 36) )
                    	        	    {
                    	        	        alt52 = 1;
                    	        	    }


                    	        	    switch (alt52) 
                    	        		{
                    	        			case 1 :
                    	        			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:144:22: ',' exp
                    	        			    {
                    	        			    	Match(input,36,FOLLOW_36_in_inst1022); if (state.failed) return ;
                    	        			    	PushFollow(FOLLOW_exp_in_inst1023);
                    	        			    	exp();
                    	        			    	state.followingStackPointer--;
                    	        			    	if (state.failed) return ;

                    	        			    }
                    	        			    break;

                    	        			default:
                    	        			    goto loop52;
                    	        	    }
                    	        	} while (true);

                    	        	loop52:
                    	        		;	// Stops C# compiler whining that label 'loop52' has no statements

                    	        	Match(input,25,FOLLOW_25_in_inst1026); if (state.failed) return ;

                    	        }
                    	        break;

                    	}


                    }
                    break;
                case 6 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:145:3: 'read' '(' ID ( ',' ID )* ')'
                    {
                    	Match(input,52,FOLLOW_52_in_inst1034); if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_inst1036); if (state.failed) return ;
                    	Match(input,ID,FOLLOW_ID_in_inst1038); if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:145:17: ( ',' ID )*
                    	do 
                    	{
                    	    int alt54 = 2;
                    	    int LA54_0 = input.LA(1);

                    	    if ( (LA54_0 == 36) )
                    	    {
                    	        alt54 = 1;
                    	    }


                    	    switch (alt54) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:145:18: ',' ID
                    			    {
                    			    	Match(input,36,FOLLOW_36_in_inst1041); if (state.failed) return ;
                    			    	Match(input,ID,FOLLOW_ID_in_inst1043); if (state.failed) return ;

                    			    }
                    			    break;

                    			default:
                    			    goto loop54;
                    	    }
                    	} while (true);

                    	loop54:
                    		;	// Stops C# compiler whining that label 'loop54' has no statements

                    	Match(input,25,FOLLOW_25_in_inst1048); if (state.failed) return ;

                    }
                    break;
                case 7 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:146:3: 'write' '(' exp ( ',' exp )* ')'
                    {
                    	Match(input,53,FOLLOW_53_in_inst1054); if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_inst1056); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1058);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:146:19: ( ',' exp )*
                    	do 
                    	{
                    	    int alt55 = 2;
                    	    int LA55_0 = input.LA(1);

                    	    if ( (LA55_0 == 36) )
                    	    {
                    	        alt55 = 1;
                    	    }


                    	    switch (alt55) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:146:20: ',' exp
                    			    {
                    			    	Match(input,36,FOLLOW_36_in_inst1061); if (state.failed) return ;
                    			    	PushFollow(FOLLOW_exp_in_inst1062);
                    			    	exp();
                    			    	state.followingStackPointer--;
                    			    	if (state.failed) return ;

                    			    }
                    			    break;

                    			default:
                    			    goto loop55;
                    	    }
                    	} while (true);

                    	loop55:
                    		;	// Stops C# compiler whining that label 'loop55' has no statements

                    	Match(input,25,FOLLOW_25_in_inst1066); if (state.failed) return ;

                    }
                    break;
                case 8 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:147:3: 'open' '(' exp ',' exp ',' exp ')'
                    {
                    	Match(input,54,FOLLOW_54_in_inst1072); if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_inst1074); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1076);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,36,FOLLOW_36_in_inst1078); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1080);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,36,FOLLOW_36_in_inst1082); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1084);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_inst1086); if (state.failed) return ;

                    }
                    break;
                case 9 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:148:3: 'ass_item' '(' exp '[' exp ( ',' exp )* ']' ',' exp ')'
                    {
                    	Match(input,55,FOLLOW_55_in_inst1092); if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_inst1094); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1096);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,56,FOLLOW_56_in_inst1098); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1100);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:148:30: ( ',' exp )*
                    	do 
                    	{
                    	    int alt56 = 2;
                    	    int LA56_0 = input.LA(1);

                    	    if ( (LA56_0 == 36) )
                    	    {
                    	        alt56 = 1;
                    	    }


                    	    switch (alt56) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:148:32: ',' exp
                    			    {
                    			    	Match(input,36,FOLLOW_36_in_inst1104); if (state.failed) return ;
                    			    	PushFollow(FOLLOW_exp_in_inst1106);
                    			    	exp();
                    			    	state.followingStackPointer--;
                    			    	if (state.failed) return ;

                    			    }
                    			    break;

                    			default:
                    			    goto loop56;
                    	    }
                    	} while (true);

                    	loop56:
                    		;	// Stops C# compiler whining that label 'loop56' has no statements

                    	Match(input,57,FOLLOW_57_in_inst1112); if (state.failed) return ;
                    	Match(input,36,FOLLOW_36_in_inst1114); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1116);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_inst1118); if (state.failed) return ;

                    }
                    break;
                case 10 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:149:3: Proc26 '(' exp ')'
                    {
                    	Match(input,Proc26,FOLLOW_Proc26_in_inst1124); if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_inst1126); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1128);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_inst1130); if (state.failed) return ;

                    }
                    break;
                case 11 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:150:3: Proc53 '(' ID ',' ID ')'
                    {
                    	Match(input,Proc53,FOLLOW_Proc53_in_inst1136); if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_inst1138); if (state.failed) return ;
                    	Match(input,ID,FOLLOW_ID_in_inst1140); if (state.failed) return ;
                    	Match(input,36,FOLLOW_36_in_inst1142); if (state.failed) return ;
                    	Match(input,ID,FOLLOW_ID_in_inst1144); if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_inst1146); if (state.failed) return ;

                    }
                    break;
                case 12 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:151:3: Proc50 '(' exp ',' exp ')'
                    {
                    	Match(input,Proc50,FOLLOW_Proc50_in_inst1152); if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_inst1154); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1156);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,36,FOLLOW_36_in_inst1158); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1160);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_inst1162); if (state.failed) return ;

                    }
                    break;
                case 13 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:3: Proc39 '(' ID ',' '[' ( exp | '[' exp ( ',' exp )* ']' ) ( ',' ( exp | '[' exp ( ',' exp )* ']' ) )* ']' ')'
                    {
                    	Match(input,Proc39,FOLLOW_Proc39_in_inst1168); if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_inst1170); if (state.failed) return ;
                    	Match(input,ID,FOLLOW_ID_in_inst1172); if (state.failed) return ;
                    	Match(input,36,FOLLOW_36_in_inst1174); if (state.failed) return ;
                    	Match(input,56,FOLLOW_56_in_inst1176); if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:25: ( exp | '[' exp ( ',' exp )* ']' )
                    	int alt58 = 2;
                    	int LA58_0 = input.LA(1);

                    	if ( (LA58_0 == ID || LA58_0 == CSTE || LA58_0 == STRING || LA58_0 == 24 || LA58_0 == 26 || (LA58_0 >= 58 && LA58_0 <= 59) || (LA58_0 >= 61 && LA58_0 <= 64)) )
                    	{
                    	    alt58 = 1;
                    	}
                    	else if ( (LA58_0 == 56) )
                    	{
                    	    alt58 = 2;
                    	}
                    	else 
                    	{
                    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
                    	    NoViableAltException nvae_d58s0 =
                    	        new NoViableAltException("", 58, 0, input);

                    	    throw nvae_d58s0;
                    	}
                    	switch (alt58) 
                    	{
                    	    case 1 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:27: exp
                    	        {
                    	        	PushFollow(FOLLOW_exp_in_inst1180);
                    	        	exp();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return ;

                    	        }
                    	        break;
                    	    case 2 :
                    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:33: '[' exp ( ',' exp )* ']'
                    	        {
                    	        	Match(input,56,FOLLOW_56_in_inst1184); if (state.failed) return ;
                    	        	PushFollow(FOLLOW_exp_in_inst1186);
                    	        	exp();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return ;
                    	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:41: ( ',' exp )*
                    	        	do 
                    	        	{
                    	        	    int alt57 = 2;
                    	        	    int LA57_0 = input.LA(1);

                    	        	    if ( (LA57_0 == 36) )
                    	        	    {
                    	        	        alt57 = 1;
                    	        	    }


                    	        	    switch (alt57) 
                    	        		{
                    	        			case 1 :
                    	        			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:43: ',' exp
                    	        			    {
                    	        			    	Match(input,36,FOLLOW_36_in_inst1190); if (state.failed) return ;
                    	        			    	PushFollow(FOLLOW_exp_in_inst1192);
                    	        			    	exp();
                    	        			    	state.followingStackPointer--;
                    	        			    	if (state.failed) return ;

                    	        			    }
                    	        			    break;

                    	        			default:
                    	        			    goto loop57;
                    	        	    }
                    	        	} while (true);

                    	        	loop57:
                    	        		;	// Stops C# compiler whining that label 'loop57' has no statements

                    	        	Match(input,57,FOLLOW_57_in_inst1198); if (state.failed) return ;

                    	        }
                    	        break;

                    	}

                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:62: ( ',' ( exp | '[' exp ( ',' exp )* ']' ) )*
                    	do 
                    	{
                    	    int alt61 = 2;
                    	    int LA61_0 = input.LA(1);

                    	    if ( (LA61_0 == 36) )
                    	    {
                    	        alt61 = 1;
                    	    }


                    	    switch (alt61) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:64: ',' ( exp | '[' exp ( ',' exp )* ']' )
                    			    {
                    			    	Match(input,36,FOLLOW_36_in_inst1205); if (state.failed) return ;
                    			    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:68: ( exp | '[' exp ( ',' exp )* ']' )
                    			    	int alt60 = 2;
                    			    	int LA60_0 = input.LA(1);

                    			    	if ( (LA60_0 == ID || LA60_0 == CSTE || LA60_0 == STRING || LA60_0 == 24 || LA60_0 == 26 || (LA60_0 >= 58 && LA60_0 <= 59) || (LA60_0 >= 61 && LA60_0 <= 64)) )
                    			    	{
                    			    	    alt60 = 1;
                    			    	}
                    			    	else if ( (LA60_0 == 56) )
                    			    	{
                    			    	    alt60 = 2;
                    			    	}
                    			    	else 
                    			    	{
                    			    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
                    			    	    NoViableAltException nvae_d60s0 =
                    			    	        new NoViableAltException("", 60, 0, input);

                    			    	    throw nvae_d60s0;
                    			    	}
                    			    	switch (alt60) 
                    			    	{
                    			    	    case 1 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:69: exp
                    			    	        {
                    			    	        	PushFollow(FOLLOW_exp_in_inst1208);
                    			    	        	exp();
                    			    	        	state.followingStackPointer--;
                    			    	        	if (state.failed) return ;

                    			    	        }
                    			    	        break;
                    			    	    case 2 :
                    			    	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:75: '[' exp ( ',' exp )* ']'
                    			    	        {
                    			    	        	Match(input,56,FOLLOW_56_in_inst1212); if (state.failed) return ;
                    			    	        	PushFollow(FOLLOW_exp_in_inst1214);
                    			    	        	exp();
                    			    	        	state.followingStackPointer--;
                    			    	        	if (state.failed) return ;
                    			    	        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:84: ( ',' exp )*
                    			    	        	do 
                    			    	        	{
                    			    	        	    int alt59 = 2;
                    			    	        	    int LA59_0 = input.LA(1);

                    			    	        	    if ( (LA59_0 == 36) )
                    			    	        	    {
                    			    	        	        alt59 = 1;
                    			    	        	    }


                    			    	        	    switch (alt59) 
                    			    	        		{
                    			    	        			case 1 :
                    			    	        			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:152:85: ',' exp
                    			    	        			    {
                    			    	        			    	Match(input,36,FOLLOW_36_in_inst1218); if (state.failed) return ;
                    			    	        			    	PushFollow(FOLLOW_exp_in_inst1220);
                    			    	        			    	exp();
                    			    	        			    	state.followingStackPointer--;
                    			    	        			    	if (state.failed) return ;

                    			    	        			    }
                    			    	        			    break;

                    			    	        			default:
                    			    	        			    goto loop59;
                    			    	        	    }
                    			    	        	} while (true);

                    			    	        	loop59:
                    			    	        		;	// Stops C# compiler whining that label 'loop59' has no statements

                    			    	        	Match(input,57,FOLLOW_57_in_inst1225); if (state.failed) return ;

                    			    	        }
                    			    	        break;

                    			    	}


                    			    }
                    			    break;

                    			default:
                    			    goto loop61;
                    	    }
                    	} while (true);

                    	loop61:
                    		;	// Stops C# compiler whining that label 'loop61' has no statements

                    	Match(input,57,FOLLOW_57_in_inst1231); if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_inst1233); if (state.failed) return ;

                    }
                    break;
                case 14 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:153:3: Proc30 '(' exp ',' exp ',' exp ')'
                    {
                    	Match(input,Proc30,FOLLOW_Proc30_in_inst1239); if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_inst1241); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1243);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,36,FOLLOW_36_in_inst1245); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1247);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,36,FOLLOW_36_in_inst1249); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_inst1251);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_inst1253); if (state.failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "inst"


    // $ANTLR start "exp"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:173:1: exp : exps ( Opr exps )? ;
    public void exp() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:174:3: ( exps ( Opr exps )? )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:174:5: exps ( Opr exps )?
            {
            	PushFollow(FOLLOW_exps_in_exp1477);
            	exps();
            	state.followingStackPointer--;
            	if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:174:10: ( Opr exps )?
            	int alt63 = 2;
            	int LA63_0 = input.LA(1);

            	if ( (LA63_0 == Opr) )
            	{
            	    alt63 = 1;
            	}
            	switch (alt63) 
            	{
            	    case 1 :
            	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:174:12: Opr exps
            	        {
            	        	Match(input,Opr,FOLLOW_Opr_in_exp1481); if (state.failed) return ;
            	        	PushFollow(FOLLOW_exps_in_exp1483);
            	        	exps();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return ;

            	        }
            	        break;

            	}


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "exp"


    // $ANTLR start "exps"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:176:1: exps : ( ( '+' | '-' ) terme ( ( '+' | '-' | 'or' ) terme )* | terme ( ( '+' | '-' | 'or' ) terme )* );
    public void exps() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:177:3: ( ( '+' | '-' ) terme ( ( '+' | '-' | 'or' ) terme )* | terme ( ( '+' | '-' | 'or' ) terme )* )
            int alt66 = 2;
            int LA66_0 = input.LA(1);

            if ( ((LA66_0 >= 58 && LA66_0 <= 59)) )
            {
                alt66 = 1;
            }
            else if ( (LA66_0 == ID || LA66_0 == CSTE || LA66_0 == STRING || LA66_0 == 24 || LA66_0 == 26 || (LA66_0 >= 61 && LA66_0 <= 64)) )
            {
                alt66 = 2;
            }
            else 
            {
                if ( state.backtracking > 0 ) {state.failed = true; return ;}
                NoViableAltException nvae_d66s0 =
                    new NoViableAltException("", 66, 0, input);

                throw nvae_d66s0;
            }
            switch (alt66) 
            {
                case 1 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:177:5: ( '+' | '-' ) terme ( ( '+' | '-' | 'or' ) terme )*
                    {
                    	if ( (input.LA(1) >= 58 && input.LA(1) <= 59) ) 
                    	{
                    	    input.Consume();
                    	    state.errorRecovery = false;state.failed = false;
                    	}
                    	else 
                    	{
                    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
                    	    throw mse;
                    	}

                    	PushFollow(FOLLOW_terme_in_exps1506);
                    	terme();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:177:23: ( ( '+' | '-' | 'or' ) terme )*
                    	do 
                    	{
                    	    int alt64 = 2;
                    	    int LA64_0 = input.LA(1);

                    	    if ( ((LA64_0 >= 58 && LA64_0 <= 60)) )
                    	    {
                    	        alt64 = 1;
                    	    }


                    	    switch (alt64) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:177:25: ( '+' | '-' | 'or' ) terme
                    			    {
                    			    	if ( (input.LA(1) >= 58 && input.LA(1) <= 60) ) 
                    			    	{
                    			    	    input.Consume();
                    			    	    state.errorRecovery = false;state.failed = false;
                    			    	}
                    			    	else 
                    			    	{
                    			    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
                    			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
                    			    	    throw mse;
                    			    	}

                    			    	PushFollow(FOLLOW_terme_in_exps1522);
                    			    	terme();
                    			    	state.followingStackPointer--;
                    			    	if (state.failed) return ;

                    			    }
                    			    break;

                    			default:
                    			    goto loop64;
                    	    }
                    	} while (true);

                    	loop64:
                    		;	// Stops C# compiler whining that label 'loop64' has no statements


                    }
                    break;
                case 2 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:178:3: terme ( ( '+' | '-' | 'or' ) terme )*
                    {
                    	PushFollow(FOLLOW_terme_in_exps1534);
                    	terme();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:178:9: ( ( '+' | '-' | 'or' ) terme )*
                    	do 
                    	{
                    	    int alt65 = 2;
                    	    int LA65_0 = input.LA(1);

                    	    if ( ((LA65_0 >= 58 && LA65_0 <= 60)) )
                    	    {
                    	        alt65 = 1;
                    	    }


                    	    switch (alt65) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:178:11: ( '+' | '-' | 'or' ) terme
                    			    {
                    			    	if ( (input.LA(1) >= 58 && input.LA(1) <= 60) ) 
                    			    	{
                    			    	    input.Consume();
                    			    	    state.errorRecovery = false;state.failed = false;
                    			    	}
                    			    	else 
                    			    	{
                    			    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
                    			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
                    			    	    throw mse;
                    			    	}

                    			    	PushFollow(FOLLOW_terme_in_exps1550);
                    			    	terme();
                    			    	state.followingStackPointer--;
                    			    	if (state.failed) return ;

                    			    }
                    			    break;

                    			default:
                    			    goto loop65;
                    	    }
                    	} while (true);

                    	loop65:
                    		;	// Stops C# compiler whining that label 'loop65' has no statements


                    }
                    break;

            }
        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "exps"


    // $ANTLR start "terme"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:180:1: terme : facteur ( Opm facteur )* ;
    public void terme() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:181:3: ( facteur ( Opm facteur )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:181:5: facteur ( Opm facteur )*
            {
            	PushFollow(FOLLOW_facteur_in_terme1564);
            	facteur();
            	state.followingStackPointer--;
            	if (state.failed) return ;
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:181:12: ( Opm facteur )*
            	do 
            	{
            	    int alt67 = 2;
            	    int LA67_0 = input.LA(1);

            	    if ( (LA67_0 == Opm) )
            	    {
            	        alt67 = 1;
            	    }


            	    switch (alt67) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:181:13: Opm facteur
            			    {
            			    	Match(input,Opm,FOLLOW_Opm_in_terme1566); if (state.failed) return ;
            			    	PushFollow(FOLLOW_facteur_in_terme1568);
            			    	facteur();
            			    	state.followingStackPointer--;
            			    	if (state.failed) return ;

            			    }
            			    break;

            			default:
            			    goto loop67;
            	    }
            	} while (true);

            	loop67:
            		;	// Stops C# compiler whining that label 'loop67' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "terme"


    // $ANTLR start "facteur"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:183:1: facteur : ( ID | CSTE | fonct | 'nil' | '(' exp ')' | 'not' facteur | 'true' | 'false' | STRING );
    public void facteur() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:184:3: ( ID | CSTE | fonct | 'nil' | '(' exp ')' | 'not' facteur | 'true' | 'false' | STRING )
            int alt68 = 9;
            switch ( input.LA(1) ) 
            {
            case ID:
            	{
                alt68 = 1;
                }
                break;
            case CSTE:
            	{
                alt68 = 2;
                }
                break;
            case 26:
            	{
                alt68 = 3;
                }
                break;
            case 61:
            	{
                alt68 = 4;
                }
                break;
            case 24:
            	{
                alt68 = 5;
                }
                break;
            case 62:
            	{
                alt68 = 6;
                }
                break;
            case 63:
            	{
                alt68 = 7;
                }
                break;
            case 64:
            	{
                alt68 = 8;
                }
                break;
            case STRING:
            	{
                alt68 = 9;
                }
                break;
            	default:
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    NoViableAltException nvae_d68s0 =
            	        new NoViableAltException("", 68, 0, input);

            	    throw nvae_d68s0;
            }

            switch (alt68) 
            {
                case 1 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:184:5: ID
                    {
                    	Match(input,ID,FOLLOW_ID_in_facteur1585); if (state.failed) return ;

                    }
                    break;
                case 2 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:184:11: CSTE
                    {
                    	Match(input,CSTE,FOLLOW_CSTE_in_facteur1590); if (state.failed) return ;

                    }
                    break;
                case 3 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:184:18: fonct
                    {
                    	PushFollow(FOLLOW_fonct_in_facteur1594);
                    	fonct();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;

                    }
                    break;
                case 4 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:184:26: 'nil'
                    {
                    	Match(input,61,FOLLOW_61_in_facteur1598); if (state.failed) return ;

                    }
                    break;
                case 5 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:184:34: '(' exp ')'
                    {
                    	Match(input,24,FOLLOW_24_in_facteur1602); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_facteur1604);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_facteur1606); if (state.failed) return ;

                    }
                    break;
                case 6 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:184:48: 'not' facteur
                    {
                    	Match(input,62,FOLLOW_62_in_facteur1610); if (state.failed) return ;
                    	PushFollow(FOLLOW_facteur_in_facteur1612);
                    	facteur();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;

                    }
                    break;
                case 7 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:184:64: 'true'
                    {
                    	Match(input,63,FOLLOW_63_in_facteur1616); if (state.failed) return ;

                    }
                    break;
                case 8 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:184:73: 'false'
                    {
                    	Match(input,64,FOLLOW_64_in_facteur1620); if (state.failed) return ;

                    }
                    break;
                case 9 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:184:83: STRING
                    {
                    	Match(input,STRING,FOLLOW_STRING_in_facteur1624); if (state.failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "facteur"


    // $ANTLR start "fanct"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:186:1: fanct : ( fonct27 '(' fonct ')' | fonct57 '(' ID ')' | fonct32 '(' fonct ',' exp ')' | fonct34 '(' exp ',' exp ')' | fonct58 ID | 'item' '(' fonct '[' exp ( ',' exp )* ']' ')' );
    public void fanct() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:187:3: ( fonct27 '(' fonct ')' | fonct57 '(' ID ')' | fonct32 '(' fonct ',' exp ')' | fonct34 '(' exp ',' exp ')' | fonct58 ID | 'item' '(' fonct '[' exp ( ',' exp )* ']' ')' )
            int alt70 = 6;
            switch ( input.LA(1) ) 
            {
            case 77:
            case 78:
            	{
                int LA70_1 = input.LA(2);

                if ( (LA70_1 == ID) )
                {
                    alt70 = 5;
                }
                else if ( (LA70_1 == 24) )
                {
                    alt70 = 1;
                }
                else 
                {
                    if ( state.backtracking > 0 ) {state.failed = true; return ;}
                    NoViableAltException nvae_d70s1 =
                        new NoViableAltException("", 70, 1, input);

                    throw nvae_d70s1;
                }
                }
                break;
            case 79:
            case 80:
            	{
                alt70 = 2;
                }
                break;
            case 81:
            case 82:
            	{
                alt70 = 3;
                }
                break;
            case 35:
            case 83:
            case 84:
            case 85:
            case 86:
            case 87:
            case 88:
            	{
                alt70 = 4;
                }
                break;
            case 66:
            case 67:
            case 68:
            case 69:
            case 70:
            case 71:
            case 72:
            case 73:
            case 74:
            case 75:
            case 76:
            	{
                alt70 = 1;
                }
                break;
            case 65:
            	{
                alt70 = 6;
                }
                break;
            	default:
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    NoViableAltException nvae_d70s0 =
            	        new NoViableAltException("", 70, 0, input);

            	    throw nvae_d70s0;
            }

            switch (alt70) 
            {
                case 1 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:187:5: fonct27 '(' fonct ')'
                    {
                    	PushFollow(FOLLOW_fonct27_in_fanct1638);
                    	fonct27();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_fanct1641); if (state.failed) return ;
                    	PushFollow(FOLLOW_fonct_in_fanct1643);
                    	fonct();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_fanct1645); if (state.failed) return ;

                    }
                    break;
                case 2 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:188:3: fonct57 '(' ID ')'
                    {
                    	PushFollow(FOLLOW_fonct57_in_fanct1652);
                    	fonct57();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_fanct1655); if (state.failed) return ;
                    	Match(input,ID,FOLLOW_ID_in_fanct1657); if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_fanct1659); if (state.failed) return ;

                    }
                    break;
                case 3 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:189:3: fonct32 '(' fonct ',' exp ')'
                    {
                    	PushFollow(FOLLOW_fonct32_in_fanct1665);
                    	fonct32();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_fanct1668); if (state.failed) return ;
                    	PushFollow(FOLLOW_fonct_in_fanct1670);
                    	fonct();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,36,FOLLOW_36_in_fanct1673); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_fanct1675);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_fanct1677); if (state.failed) return ;

                    }
                    break;
                case 4 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:190:3: fonct34 '(' exp ',' exp ')'
                    {
                    	PushFollow(FOLLOW_fonct34_in_fanct1695);
                    	fonct34();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_fanct1697); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_fanct1699);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,36,FOLLOW_36_in_fanct1701); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_fanct1703);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_fanct1705); if (state.failed) return ;

                    }
                    break;
                case 5 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:191:3: fonct58 ID
                    {
                    	PushFollow(FOLLOW_fonct58_in_fanct1711);
                    	fonct58();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,ID,FOLLOW_ID_in_fanct1713); if (state.failed) return ;

                    }
                    break;
                case 6 :
                    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:192:3: 'item' '(' fonct '[' exp ( ',' exp )* ']' ')'
                    {
                    	Match(input,65,FOLLOW_65_in_fanct1719); if (state.failed) return ;
                    	Match(input,24,FOLLOW_24_in_fanct1722); if (state.failed) return ;
                    	PushFollow(FOLLOW_fonct_in_fanct1724);
                    	fonct();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	Match(input,56,FOLLOW_56_in_fanct1726); if (state.failed) return ;
                    	PushFollow(FOLLOW_exp_in_fanct1728);
                    	exp();
                    	state.followingStackPointer--;
                    	if (state.failed) return ;
                    	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:192:29: ( ',' exp )*
                    	do 
                    	{
                    	    int alt69 = 2;
                    	    int LA69_0 = input.LA(1);

                    	    if ( (LA69_0 == 36) )
                    	    {
                    	        alt69 = 1;
                    	    }


                    	    switch (alt69) 
                    		{
                    			case 1 :
                    			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:192:30: ',' exp
                    			    {
                    			    	Match(input,36,FOLLOW_36_in_fanct1731); if (state.failed) return ;
                    			    	PushFollow(FOLLOW_exp_in_fanct1733);
                    			    	exp();
                    			    	state.followingStackPointer--;
                    			    	if (state.failed) return ;

                    			    }
                    			    break;

                    			default:
                    			    goto loop69;
                    	    }
                    	} while (true);

                    	loop69:
                    		;	// Stops C# compiler whining that label 'loop69' has no statements

                    	Match(input,57,FOLLOW_57_in_fanct1738); if (state.failed) return ;
                    	Match(input,25,FOLLOW_25_in_fanct1740); if (state.failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "fanct"


    // $ANTLR start "fonct27"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:194:1: fonct27 : ( 'left_son' | 'rigth_son' | 'father' | 'info' | 'value' | 'next' | 'previous' | 'queue_empty' | 'stack_empty' | 'degree' | 'length' | 'alea_string' | 'alea_number' );
    public void fonct27() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:195:3: ( 'left_son' | 'rigth_son' | 'father' | 'info' | 'value' | 'next' | 'previous' | 'queue_empty' | 'stack_empty' | 'degree' | 'length' | 'alea_string' | 'alea_number' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:
            {
            	if ( (input.LA(1) >= 66 && input.LA(1) <= 78) ) 
            	{
            	    input.Consume();
            	    state.errorRecovery = false;state.failed = false;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    throw mse;
            	}


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "fonct27"


    // $ANTLR start "fonct57"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:197:1: fonct57 : ( 'alloc_bloc' | 'end_file' );
    public void fonct57() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:198:3: ( 'alloc_bloc' | 'end_file' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:
            {
            	if ( (input.LA(1) >= 79 && input.LA(1) <= 80) ) 
            	{
            	    input.Consume();
            	    state.errorRecovery = false;state.failed = false;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    throw mse;
            	}


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "fonct57"


    // $ANTLR start "fonct32"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:200:1: fonct32 : ( 'son' | 'infor' );
    public void fonct32() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:201:3: ( 'son' | 'infor' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:
            {
            	if ( (input.LA(1) >= 81 && input.LA(1) <= 82) ) 
            	{
            	    input.Consume();
            	    state.errorRecovery = false;state.failed = false;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    throw mse;
            	}


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "fonct32"


    // $ANTLR start "fonct34"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:203:1: fonct34 : ( 'mod' | 'min' | 'max' | 'struct' | 'charact' | 'header' | 'exp' );
    public void fonct34() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:204:3: ( 'mod' | 'min' | 'max' | 'struct' | 'charact' | 'header' | 'exp' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:
            {
            	if ( input.LA(1) == 35 || (input.LA(1) >= 83 && input.LA(1) <= 88) ) 
            	{
            	    input.Consume();
            	    state.errorRecovery = false;state.failed = false;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    throw mse;
            	}


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "fonct34"


    // $ANTLR start "fonct58"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:206:1: fonct58 : ( 'alea_string' | 'alea_number' );
    public void fonct58() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:207:3: ( 'alea_string' | 'alea_number' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:
            {
            	if ( (input.LA(1) >= 77 && input.LA(1) <= 78) ) 
            	{
            	    input.Consume();
            	    state.errorRecovery = false;state.failed = false;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    throw mse;
            	}


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "fonct58"

    public class definition_return : ParserRuleReturnScope
    {
    };

    // $ANTLR start "definition"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:219:1: definition : ( 'definition' | 'definitions' );
    public GrammaireZ2EnuParser.definition_return definition() // throws RecognitionException [1]
    {   
        GrammaireZ2EnuParser.definition_return retval = new GrammaireZ2EnuParser.definition_return();
        retval.Start = input.LT(1);

        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:220:2: ( 'definition' | 'definitions' )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:
            {
            	if ( (input.LA(1) >= 89 && input.LA(1) <= 90) ) 
            	{
            	    input.Consume();
            	    state.errorRecovery = false;state.failed = false;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    throw mse;
            	}


            }

            retval.Stop = input.LT(-1);

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return retval;
    }
    // $ANTLR end "definition"


    // $ANTLR start "lisIngnoreEnd"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:222:1: lisIngnoreEnd : (~ ( 'end' ) )* ;
    public void lisIngnoreEnd() // throws RecognitionException [1]
    {   
        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:223:2: ( (~ ( 'end' ) )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:223:4: (~ ( 'end' ) )*
            {
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:223:4: (~ ( 'end' ) )*
            	do 
            	{
            	    int alt71 = 2;
            	    int LA71_0 = input.LA(1);

            	    if ( ((LA71_0 >= ID && LA71_0 <= 20) || (LA71_0 >= 22 && LA71_0 <= 90)) )
            	    {
            	        alt71 = 1;
            	    }


            	    switch (alt71) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:223:5: ~ ( 'end' )
            			    {
            			    	if ( (input.LA(1) >= ID && input.LA(1) <= 20) || (input.LA(1) >= 22 && input.LA(1) <= 90) ) 
            			    	{
            			    	    input.Consume();
            			    	    state.errorRecovery = false;state.failed = false;
            			    	}
            			    	else 
            			    	{
            			    	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
            			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
            			    	    throw mse;
            			    	}


            			    }
            			    break;

            			default:
            			    goto loop71;
            	    }
            	} while (true);

            	loop71:
            		;	// Stops C# compiler whining that label 'loop71' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return ;
    }
    // $ANTLR end "lisIngnoreEnd"

    public class lisIngnoreBeginSemiColon_return : ParserRuleReturnScope
    {
        public string str = "";
        public IToken d;
        public IToken f;
    };

    // $ANTLR start "lisIngnoreBeginSemiColon"
    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:228:1: lisIngnoreBeginSemiColon returns [string str = \"\", IToken d, IToken f] : (i=~ ( 'begin' | ';' ) )* ;
    public GrammaireZ2EnuParser.lisIngnoreBeginSemiColon_return lisIngnoreBeginSemiColon() // throws RecognitionException [1]
    {   
        GrammaireZ2EnuParser.lisIngnoreBeginSemiColon_return retval = new GrammaireZ2EnuParser.lisIngnoreBeginSemiColon_return();
        retval.Start = input.LT(1);

        IToken i = null;

        try 
    	{
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:229:2: ( (i=~ ( 'begin' | ';' ) )* )
            // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:229:4: (i=~ ( 'begin' | ';' ) )*
            {
            	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:229:4: (i=~ ( 'begin' | ';' ) )*
            	do 
            	{
            	    int alt72 = 2;
            	    int LA72_0 = input.LA(1);

            	    if ( ((LA72_0 >= ID && LA72_0 <= Q) || LA72_0 == 21 || (LA72_0 >= 23 && LA72_0 <= 90)) )
            	    {
            	        alt72 = 1;
            	    }


            	    switch (alt72) 
            		{
            			case 1 :
            			    // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:229:5: i=~ ( 'begin' | ';' )
            			    {
            			    	i = (IToken)input.LT(1);
            			    	if ( (input.LA(1) >= ID && input.LA(1) <= Q) || input.LA(1) == 21 || (input.LA(1) >= 23 && input.LA(1) <= 90) ) 
            			    	{
            			    	    input.Consume();
            			    	    state.errorRecovery = false;state.failed = false;
            			    	}
            			    	else 
            			    	{
            			    	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
            			    	    throw mse;
            			    	}

            			    	if ( (state.backtracking==0) )
            			    	{
            			    	   if(retval.d == null) retval.d =  i;
            			    	}

            			    }
            			    break;

            			default:
            			    goto loop72;
            	    }
            	} while (true);

            	loop72:
            		;	// Stops C# compiler whining that label 'loop72' has no statements

            	if ( (state.backtracking==0) )
            	{
            	  retval.f =  i; retval.str =  input.ToString(retval.d, retval.f);
            	}

            }

            retval.Stop = input.LT(-1);

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return retval;
    }
    // $ANTLR end "lisIngnoreBeginSemiColon"

    // $ANTLR start "synpred1_GrammaireZ2Enu"
    public void synpred1_GrammaireZ2Enu_fragment() {
        GrammaireZ2EnuParser.definition_return st = default(GrammaireZ2EnuParser.definition_return);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:7: (st= definition )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:7: st= definition
        {
        	PushFollow(FOLLOW_definition_in_synpred1_GrammaireZ2Enu82);
        	st = definition();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred1_GrammaireZ2Enu"

    // $ANTLR start "synpred3_GrammaireZ2Enu"
    public void synpred3_GrammaireZ2Enu_fragment() {
        GrammaireZ2EnuParser.definition_return st = default(GrammaireZ2EnuParser.definition_return);

        List<VariableDeclare> p = default(List<VariableDeclare>);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:5: ( (st= definition )? (p= ps )? )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:5: (st= definition )? (p= ps )?
        {
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:7: (st= definition )?
        	int alt73 = 2;
        	int LA73_0 = input.LA(1);

        	if ( ((LA73_0 >= 89 && LA73_0 <= 90)) )
        	{
        	    int LA73_1 = input.LA(2);

        	    if ( (synpred1_GrammaireZ2Enu()) )
        	    {
        	        alt73 = 1;
        	    }
        	}
        	switch (alt73) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: st= definition
        	        {
        	        	PushFollow(FOLLOW_definition_in_synpred3_GrammaireZ2Enu82);
        	        	st = definition();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}

        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:31:22: (p= ps )?
        	int alt74 = 2;
        	int LA74_0 = input.LA(1);

        	if ( ((LA74_0 >= ID && LA74_0 <= Q) || (LA74_0 >= 21 && LA74_0 <= 90)) )
        	{
        	    alt74 = 1;
        	}
        	switch (alt74) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: p= ps
        	        {
        	        	PushFollow(FOLLOW_ps_in_synpred3_GrammaireZ2Enu88);
        	        	p = ps();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}


        }
    }
    // $ANTLR end "synpred3_GrammaireZ2Enu"

    // $ANTLR start "synpred8_GrammaireZ2Enu"
    public void synpred8_GrammaireZ2Enu_fragment() {
        IToken id = null;

        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:17: (id= ID )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:17: id= ID
        {
        	id=(IToken)Match(input,ID,FOLLOW_ID_in_synpred8_GrammaireZ2Enu168); if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred8_GrammaireZ2Enu"

    // $ANTLR start "synpred10_GrammaireZ2Enu"
    public void synpred10_GrammaireZ2Enu_fragment() {
        List<VariableDeclare> i = default(List<VariableDeclare>);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:25: ( '(' (i= li )? ')' )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:25: '(' (i= li )? ')'
        {
        	Match(input,24,FOLLOW_24_in_synpred10_GrammaireZ2Enu174); if (state.failed) return ;
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:30: (i= li )?
        	int alt77 = 2;
        	int LA77_0 = input.LA(1);

        	if ( (LA77_0 == ID) )
        	{
        	    alt77 = 1;
        	}
        	switch (alt77) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: i= li
        	        {
        	        	PushFollow(FOLLOW_li_in_synpred10_GrammaireZ2Enu178);
        	        	i = li();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}

        	Match(input,25,FOLLOW_25_in_synpred10_GrammaireZ2Enu181); if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred10_GrammaireZ2Enu"

    // $ANTLR start "synpred11_GrammaireZ2Enu"
    public void synpred11_GrammaireZ2Enu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:43: ( ';' )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:43: ';'
        {
        	Match(input,22,FOLLOW_22_in_synpred11_GrammaireZ2Enu187); if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred11_GrammaireZ2Enu"

    // $ANTLR start "synpred12_GrammaireZ2Enu"
    public void synpred12_GrammaireZ2Enu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:50: ( definition )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:50: definition
        {
        	PushFollow(FOLLOW_definition_in_synpred12_GrammaireZ2Enu192);
        	definition();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred12_GrammaireZ2Enu"

    // $ANTLR start "synpred14_GrammaireZ2Enu"
    public void synpred14_GrammaireZ2Enu_fragment() {
        List<VariableDeclare> p = default(List<VariableDeclare>);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:50: ( ( definition )? (p= ps )? )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:50: ( definition )? (p= ps )?
        {
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:50: ( definition )?
        	int alt78 = 2;
        	int LA78_0 = input.LA(1);

        	if ( ((LA78_0 >= 89 && LA78_0 <= 90)) )
        	{
        	    int LA78_1 = input.LA(2);

        	    if ( (synpred12_GrammaireZ2Enu()) )
        	    {
        	        alt78 = 1;
        	    }
        	}
        	switch (alt78) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: definition
        	        {
        	        	PushFollow(FOLLOW_definition_in_synpred14_GrammaireZ2Enu192);
        	        	definition();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}

        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:48:63: (p= ps )?
        	int alt79 = 2;
        	int LA79_0 = input.LA(1);

        	if ( ((LA79_0 >= ID && LA79_0 <= Q) || (LA79_0 >= 21 && LA79_0 <= 90)) )
        	{
        	    alt79 = 1;
        	}
        	switch (alt79) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: p= ps
        	        {
        	        	PushFollow(FOLLOW_ps_in_synpred14_GrammaireZ2Enu197);
        	        	p = ps();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}


        }
    }
    // $ANTLR end "synpred14_GrammaireZ2Enu"

    // $ANTLR start "synpred17_GrammaireZ2Enu"
    public void synpred17_GrammaireZ2Enu_fragment() {
        GrammaireZ2EnuParser.typ_return ta = default(GrammaireZ2EnuParser.typ_return);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:44: (ta= typ )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:44: ta= typ
        {
        	PushFollow(FOLLOW_typ_in_synpred17_GrammaireZ2Enu258);
        	ta = typ();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred17_GrammaireZ2Enu"

    // $ANTLR start "synpred18_GrammaireZ2Enu"
    public void synpred18_GrammaireZ2Enu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:52: ( definition )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:52: definition
        {
        	PushFollow(FOLLOW_definition_in_synpred18_GrammaireZ2Enu263);
        	definition();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred18_GrammaireZ2Enu"

    // $ANTLR start "synpred20_GrammaireZ2Enu"
    public void synpred20_GrammaireZ2Enu_fragment() {
        List<VariableDeclare> p = default(List<VariableDeclare>);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:52: ( ( definition )? (p= ps )? )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:52: ( definition )? (p= ps )?
        {
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:52: ( definition )?
        	int alt80 = 2;
        	int LA80_0 = input.LA(1);

        	if ( ((LA80_0 >= 89 && LA80_0 <= 90)) )
        	{
        	    int LA80_1 = input.LA(2);

        	    if ( (synpred18_GrammaireZ2Enu()) )
        	    {
        	        alt80 = 1;
        	    }
        	}
        	switch (alt80) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: definition
        	        {
        	        	PushFollow(FOLLOW_definition_in_synpred20_GrammaireZ2Enu263);
        	        	definition();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}

        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:67:65: (p= ps )?
        	int alt81 = 2;
        	int LA81_0 = input.LA(1);

        	if ( ((LA81_0 >= ID && LA81_0 <= Q) || (LA81_0 >= 21 && LA81_0 <= 90)) )
        	{
        	    alt81 = 1;
        	}
        	switch (alt81) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: p= ps
        	        {
        	        	PushFollow(FOLLOW_ps_in_synpred20_GrammaireZ2Enu268);
        	        	p = ps();
        	        	state.followingStackPointer--;
        	        	if (state.failed) return ;

        	        }
        	        break;

        	}


        }
    }
    // $ANTLR end "synpred20_GrammaireZ2Enu"

    // $ANTLR start "synpred21_GrammaireZ2Enu"
    public void synpred21_GrammaireZ2Enu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:87:5: ( definition )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:87:5: definition
        {
        	PushFollow(FOLLOW_definition_in_synpred21_GrammaireZ2Enu337);
        	definition();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred21_GrammaireZ2Enu"

    // $ANTLR start "synpred25_GrammaireZ2Enu"
    public void synpred25_GrammaireZ2Enu_fragment() {
        IToken a1 = null;
        IToken f1 = null;
        GrammaireZ2EnuParser.typ_return t1 = default(GrammaireZ2EnuParser.typ_return);

        GrammaireZ2EnuParser.typ_return t2 = default(GrammaireZ2EnuParser.typ_return);


        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:4: ( ( li ( Sep ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) ) )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:4: ( li ( Sep ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) )
        {
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:4: ( li ( Sep ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) )
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:5: li ( Sep ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) )
        	{
        		PushFollow(FOLLOW_li_in_synpred25_GrammaireZ2Enu373);
        		li();
        		state.followingStackPointer--;
        		if (state.failed) return ;
        		// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:8: ( Sep )
        		// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:9: Sep
        		{
        			Match(input,Sep,FOLLOW_Sep_in_synpred25_GrammaireZ2Enu376); if (state.failed) return ;

        		}

        		// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:14: (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) )
        		int alt84 = 2;
        		int LA84_0 = input.LA(1);

        		if ( (LA84_0 == Types || LA84_0 == Autres || LA84_0 == 24 || (LA84_0 >= 29 && LA84_0 <= 30) || (LA84_0 >= 33 && LA84_0 <= 34) || (LA84_0 >= 38 && LA84_0 <= 39)) )
        		{
        		    alt84 = 1;
        		}
        		else if ( (LA84_0 == 23 || LA84_0 == 26) )
        		{
        		    alt84 = 2;
        		}
        		else 
        		{
        		    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        		    NoViableAltException nvae_d84s0 =
        		        new NoViableAltException("", 84, 0, input);

        		    throw nvae_d84s0;
        		}
        		switch (alt84) 
        		{
        		    case 1 :
        		        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:15: t1= typ
        		        {
        		        	PushFollow(FOLLOW_typ_in_synpred25_GrammaireZ2Enu384);
        		        	t1 = typ();
        		        	state.followingStackPointer--;
        		        	if (state.failed) return ;

        		        }
        		        break;
        		    case 2 :
        		        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:26: (a1= 'action' | f1= 'function' '(' t2= typ ')' )
        		        {
        		        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:26: (a1= 'action' | f1= 'function' '(' t2= typ ')' )
        		        	int alt83 = 2;
        		        	int LA83_0 = input.LA(1);

        		        	if ( (LA83_0 == 23) )
        		        	{
        		        	    alt83 = 1;
        		        	}
        		        	else if ( (LA83_0 == 26) )
        		        	{
        		        	    alt83 = 2;
        		        	}
        		        	else 
        		        	{
        		        	    if ( state.backtracking > 0 ) {state.failed = true; return ;}
        		        	    NoViableAltException nvae_d83s0 =
        		        	        new NoViableAltException("", 83, 0, input);

        		        	    throw nvae_d83s0;
        		        	}
        		        	switch (alt83) 
        		        	{
        		        	    case 1 :
        		        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:27: a1= 'action'
        		        	        {
        		        	        	a1=(IToken)Match(input,23,FOLLOW_23_in_synpred25_GrammaireZ2Enu393); if (state.failed) return ;

        		        	        }
        		        	        break;
        		        	    case 2 :
        		        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:91:43: f1= 'function' '(' t2= typ ')'
        		        	        {
        		        	        	f1=(IToken)Match(input,26,FOLLOW_26_in_synpred25_GrammaireZ2Enu401); if (state.failed) return ;
        		        	        	Match(input,24,FOLLOW_24_in_synpred25_GrammaireZ2Enu403); if (state.failed) return ;
        		        	        	PushFollow(FOLLOW_typ_in_synpred25_GrammaireZ2Enu409);
        		        	        	t2 = typ();
        		        	        	state.followingStackPointer--;
        		        	        	if (state.failed) return ;
        		        	        	Match(input,25,FOLLOW_25_in_synpred25_GrammaireZ2Enu411); if (state.failed) return ;

        		        	        }
        		        	        break;

        		        	}


        		        }
        		        break;

        		}


        	}


        }
    }
    // $ANTLR end "synpred25_GrammaireZ2Enu"

    // $ANTLR start "synpred27_GrammaireZ2Enu"
    public void synpred27_GrammaireZ2Enu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:105:6: ( structsimple )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:105:6: structsimple
        {
        	PushFollow(FOLLOW_structsimple_in_synpred27_GrammaireZ2Enu461);
        	structsimple();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred27_GrammaireZ2Enu"

    // $ANTLR start "synpred28_GrammaireZ2Enu"
    public void synpred28_GrammaireZ2Enu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:105:38: ( 'dynamic' )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:105:38: 'dynamic'
        {
        	Match(input,28,FOLLOW_28_in_synpred28_GrammaireZ2Enu469); if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred28_GrammaireZ2Enu"

    // $ANTLR start "synpred32_GrammaireZ2Enu"
    public void synpred32_GrammaireZ2Enu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:47: ( 'of' typecomp )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:47: 'of' typecomp
        {
        	Match(input,32,FOLLOW_32_in_synpred32_GrammaireZ2Enu493); if (state.failed) return ;
        	PushFollow(FOLLOW_typecomp_in_synpred32_GrammaireZ2Enu495);
        	typecomp();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred32_GrammaireZ2Enu"

    // $ANTLR start "synpred33_GrammaireZ2Enu"
    public void synpred33_GrammaireZ2Enu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:84: ( 'dynamic' )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:84: 'dynamic'
        {
        	Match(input,28,FOLLOW_28_in_synpred33_GrammaireZ2Enu506); if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred33_GrammaireZ2Enu"

    // $ANTLR start "synpred34_GrammaireZ2Enu"
    public void synpred34_GrammaireZ2Enu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:66: ( 'of' structsimple ( 'dynamic' )? )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:66: 'of' structsimple ( 'dynamic' )?
        {
        	Match(input,32,FOLLOW_32_in_synpred34_GrammaireZ2Enu502); if (state.failed) return ;
        	PushFollow(FOLLOW_structsimple_in_synpred34_GrammaireZ2Enu504);
        	structsimple();
        	state.followingStackPointer--;
        	if (state.failed) return ;
        	// C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:84: ( 'dynamic' )?
        	int alt87 = 2;
        	int LA87_0 = input.LA(1);

        	if ( (LA87_0 == 28) )
        	{
        	    alt87 = 1;
        	}
        	switch (alt87) 
        	{
        	    case 1 :
        	        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:0:0: 'dynamic'
        	        {
        	        	Match(input,28,FOLLOW_28_in_synpred34_GrammaireZ2Enu506); if (state.failed) return ;

        	        }
        	        break;

        	}


        }
    }
    // $ANTLR end "synpred34_GrammaireZ2Enu"

    // $ANTLR start "synpred35_GrammaireZ2Enu"
    public void synpred35_GrammaireZ2Enu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:97: ( 'of' Types )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:106:97: 'of' Types
        {
        	Match(input,32,FOLLOW_32_in_synpred35_GrammaireZ2Enu511); if (state.failed) return ;
        	Match(input,Types,FOLLOW_Types_in_synpred35_GrammaireZ2Enu513); if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred35_GrammaireZ2Enu"

    // $ANTLR start "synpred39_GrammaireZ2Enu"
    public void synpred39_GrammaireZ2Enu_fragment() {
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:55: ( structsimple )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:107:55: structsimple
        {
        	PushFollow(FOLLOW_structsimple_in_synpred39_GrammaireZ2Enu545);
        	structsimple();
        	state.followingStackPointer--;
        	if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred39_GrammaireZ2Enu"

    // $ANTLR start "synpred51_GrammaireZ2Enu"
    public void synpred51_GrammaireZ2Enu_fragment() {
        IToken i2 = null;

        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:134:50: ( ',' i2= ID )
        // C:\\Nouveau dossier\\sources\\as\\EditeurSyntaxiqueVocal\\EditeurSyntaxiqueVocal\\Languages\\LanguageZ\\Grammaire\\GrammaireZ2Enu.g:134:50: ',' i2= ID
        {
        	Match(input,36,FOLLOW_36_in_synpred51_GrammaireZ2Enu865); if (state.failed) return ;
        	i2=(IToken)Match(input,ID,FOLLOW_ID_in_synpred51_GrammaireZ2Enu869); if (state.failed) return ;

        }
    }
    // $ANTLR end "synpred51_GrammaireZ2Enu"

    // Delegated rules

   	public bool synpred17_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred17_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred34_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred34_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred8_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred8_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred39_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred39_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred33_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred33_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred10_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred10_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred12_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred12_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred32_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred32_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred20_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred20_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred27_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred27_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred28_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred28_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred18_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred18_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred14_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred14_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred1_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred1_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred25_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred25_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred51_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred51_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred35_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred35_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred11_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred11_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred3_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred3_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}
   	public bool synpred21_GrammaireZ2Enu() 
   	{
   	    state.backtracking++;
   	    int start = input.Mark();
   	    try 
   	    {
   	        synpred21_GrammaireZ2Enu_fragment(); // can never throw exception
   	    }
   	    catch (RecognitionException re) 
   	    {
   	        Console.Error.WriteLine("impossible: "+re);
   	    }
   	    bool success = !state.failed;
   	    input.Rewind(start);
   	    state.backtracking--;
   	    state.failed = false;
   	    return success;
   	}


   	protected DFA10 dfa10;
   	protected DFA17 dfa17;
   	protected DFA25 dfa25;
   	protected DFA26 dfa26;
   	protected DFA29 dfa29;
   	protected DFA31 dfa31;
   	protected DFA32 dfa32;
	private void InitializeCyclicDFAs()
	{
    	this.dfa10 = new DFA10(this);
    	this.dfa17 = new DFA17(this);
    	this.dfa25 = new DFA25(this);
    	this.dfa26 = new DFA26(this);
    	this.dfa29 = new DFA29(this);
    	this.dfa31 = new DFA31(this);
    	this.dfa32 = new DFA32(this);
	    this.dfa10.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA10_SpecialStateTransition);
	    this.dfa17.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA17_SpecialStateTransition);
	    this.dfa25.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA25_SpecialStateTransition);
	    this.dfa26.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA26_SpecialStateTransition);
	    this.dfa29.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA29_SpecialStateTransition);
	    this.dfa31.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA31_SpecialStateTransition);
	    this.dfa32.specialStateTransitionHandler = new DFA.SpecialStateTransitionHandler(DFA32_SpecialStateTransition);
	}

    const string DFA10_eotS =
        "\x08\uffff";
    const string DFA10_eofS =
        "\x08\uffff";
    const string DFA10_minS =
        "\x02\x04\x01\uffff\x01\x04\x01\x00\x01\x04\x01\uffff\x01\x04";
    const string DFA10_maxS =
        "\x02\x5a\x01\uffff\x01\x5a\x01\x00\x01\x5a\x01\uffff\x01\x5a";
    const string DFA10_acceptS =
        "\x02\uffff\x01\x02\x03\uffff\x01\x01\x01\uffff";
    const string DFA10_specialS =
        "\x04\uffff\x01\x00\x03\uffff}>";
    static readonly string[] DFA10_transitionS = {
            "\x14\x02\x01\x01\x42\x02",
            "\x01\x03\x0f\x02\x01\uffff\x04\x02\x01\x04\x41\x02",
            "",
            "\x10\x02\x01\uffff\x04\x02\x01\x04\x0a\x02\x01\x05\x36\x02",
            "\x01\uffff",
            "\x01\x07\x0f\x02\x01\uffff\x46\x02",
            "",
            "\x10\x02\x01\uffff\x04\x02\x01\x04\x0a\x02\x01\x05\x36\x02"
    };

    static readonly short[] DFA10_eot = DFA.UnpackEncodedString(DFA10_eotS);
    static readonly short[] DFA10_eof = DFA.UnpackEncodedString(DFA10_eofS);
    static readonly char[] DFA10_min = DFA.UnpackEncodedStringToUnsignedChars(DFA10_minS);
    static readonly char[] DFA10_max = DFA.UnpackEncodedStringToUnsignedChars(DFA10_maxS);
    static readonly short[] DFA10_accept = DFA.UnpackEncodedString(DFA10_acceptS);
    static readonly short[] DFA10_special = DFA.UnpackEncodedString(DFA10_specialS);
    static readonly short[][] DFA10_transition = DFA.UnpackEncodedStringArray(DFA10_transitionS);

    protected class DFA10 : DFA
    {
        public DFA10(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 10;
            this.eot = DFA10_eot;
            this.eof = DFA10_eof;
            this.min = DFA10_min;
            this.max = DFA10_max;
            this.accept = DFA10_accept;
            this.special = DFA10_special;
            this.transition = DFA10_transition;

        }

        override public string Description
        {
            get { return "48:23: ( '(' (i= li )? ')' )?"; }
        }

    }


    protected internal int DFA10_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA10_4 = input.LA(1);

                   	 
                   	int index10_4 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred10_GrammaireZ2Enu()) ) { s = 6; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index10_4);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae10 =
            new NoViableAltException(dfa.Description, 10, _s, input);
        dfa.Error(nvae10);
        throw nvae10;
    }
    const string DFA17_eotS =
        "\x40\uffff";
    const string DFA17_eofS =
        "\x40\uffff";
    const string DFA17_minS =
        "\x01\x04\x01\x00\x05\x04\x01\x00\x01\x04\x02\uffff\x03\x04\x01"+
        "\x00\x03\x04\x01\x00\x0a\x04\x01\x00\x0f\x04\x01\x00\x0c\x04\x01"+
        "\x00\x05\x04";
    const string DFA17_maxS =
        "\x01\x5a\x01\x00\x05\x5a\x01\x00\x01\x5a\x02\uffff\x03\x5a\x01"+
        "\x00\x03\x5a\x01\x00\x0a\x5a\x01\x00\x0f\x5a\x01\x00\x0c\x5a\x01"+
        "\x00\x05\x5a";
    const string DFA17_acceptS =
        "\x09\uffff\x01\x02\x01\x01\x35\uffff";
    const string DFA17_specialS =
        "\x01\uffff\x01\x00\x05\uffff\x01\x04\x06\uffff\x01\x06\x03\uffff"+
        "\x01\x02\x0a\uffff\x01\x05\x0f\uffff\x01\x03\x0c\uffff\x01\x01\x05"+
        "\uffff}>";
    static readonly string[] DFA17_transitionS = {
            "\x02\x09\x01\x01\x01\x09\x01\x07\x0f\x09\x01\x03\x04\x09\x02"+
            "\x04\x02\x09\x01\x08\x01\x06\x03\x09\x01\x02\x01\x05\x33\x09",
            "\x01\uffff",
            "\x10\x09\x01\uffff\x03\x09\x01\x03\x42\x09",
            "\x02\x09\x01\x0b\x0d\x09\x01\uffff\x0d\x09\x01\x0c\x38\x09",
            "\x10\x09\x01\uffff\x0a\x09\x01\x0d\x3b\x09",
            "\x03\x09\x01\x0e\x0c\x09\x01\uffff\x46\x09",
            "\x10\x09\x01\uffff\x03\x09\x01\x0f\x42\x09",
            "\x01\uffff",
            "\x10\x09\x01\uffff\x0b\x09\x01\x10\x3a\x09",
            "",
            "",
            "\x10\x09\x01\uffff\x04\x09\x01\x12\x0a\x09\x01\x11\x36\x09",
            "\x03\x09\x01\x13\x0c\x09\x01\uffff\x46\x09",
            "\x04\x09\x01\x07\x0b\x09\x01\uffff\x0d\x09\x01\x06\x04\x09"+
            "\x01\x05\x33\x09",
            "\x01\uffff",
            "\x03\x09\x01\x14\x0c\x09\x01\uffff\x46\x09",
            "\x02\x09\x01\x15\x0d\x09\x01\uffff\x03\x09\x01\x18\x09\x09"+
            "\x01\x16\x03\x09\x01\x17\x34\x09",
            "\x02\x09\x01\x19\x0d\x09\x01\uffff\x0d\x09\x01\x1a\x38\x09",
            "\x01\uffff",
            "\x10\x09\x01\uffff\x0b\x09\x01\x1b\x3a\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x1d\x0a\x09\x01\x1c\x36\x09",
            "\x10\x09\x01\uffff\x03\x09\x01\x1f\x0a\x09\x01\x1e\x37\x09",
            "\x03\x09\x01\x20\x0c\x09\x01\uffff\x46\x09",
            "\x10\x09\x01\uffff\x03\x09\x01\x18\x42\x09",
            "\x02\x09\x01\x21\x0d\x09\x01\uffff\x0d\x09\x01\x22\x38\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x12\x0a\x09\x01\x11\x36\x09",
            "\x03\x09\x01\x23\x0c\x09\x01\uffff\x46\x09",
            "\x02\x09\x01\x24\x0d\x09\x01\uffff\x46\x09",
            "\x03\x09\x01\x25\x0c\x09\x01\uffff\x46\x09",
            "\x01\uffff",
            "\x10\x09\x01\uffff\x03\x09\x01\x1f\x42\x09",
            "\x02\x09\x01\x26\x0d\x09\x01\uffff\x46\x09",
            "\x10\x09\x01\uffff\x0b\x09\x01\x27\x3a\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x29\x0a\x09\x01\x28\x36\x09",
            "\x03\x09\x01\x2a\x0c\x09\x01\uffff\x46\x09",
            "\x10\x09\x01\uffff\x0b\x09\x01\x2b\x3a\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x2d\x0a\x09\x01\x2c\x36\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x1d\x0a\x09\x01\x1c\x36\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x2f\x0a\x09\x01\x2e\x36\x09",
            "\x02\x09\x01\x30\x0d\x09\x01\uffff\x46\x09",
            "\x02\x09\x01\x31\x0d\x09\x01\uffff\x0d\x09\x01\x32\x38\x09",
            "\x10\x09\x01\uffff\x03\x09\x01\x1f\x0a\x09\x01\x1e\x37\x09",
            "\x10\x09\x01\uffff\x0b\x09\x01\x33\x3a\x09",
            "\x02\x09\x01\x34\x0d\x09\x01\uffff\x46\x09",
            "\x02\x09\x01\x35\x0d\x09\x01\uffff\x0d\x09\x01\x1a\x38\x09",
            "\x01\uffff",
            "\x02\x09\x01\x36\x0d\x09\x01\uffff\x46\x09",
            "\x10\x09\x01\uffff\x10\x09\x01\x37\x35\x09",
            "\x10\x09\x01\uffff\x03\x09\x01\x1f\x0a\x09\x01\x1e\x37\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x29\x0a\x09\x01\x28\x36\x09",
            "\x03\x09\x01\x38\x0c\x09\x01\uffff\x46\x09",
            "\x02\x09\x01\x39\x0d\x09\x01\uffff\x46\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x2d\x0a\x09\x01\x2c\x36\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x2d\x0a\x09\x01\x2c\x36\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x2f\x0a\x09\x01\x2e\x36\x09",
            "\x01\x3a\x0f\x09\x01\uffff\x46\x09",
            "\x10\x09\x01\uffff\x0b\x09\x01\x3b\x3a\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x3d\x0a\x09\x01\x3c\x36\x09",
            "\x01\uffff",
            "\x02\x09\x01\x3e\x0d\x09\x01\uffff\x46\x09",
            "\x02\x09\x01\x3f\x0d\x09\x01\uffff\x0d\x09\x01\x32\x38\x09",
            "\x10\x09\x01\uffff\x03\x09\x01\x1f\x0a\x09\x01\x1e\x37\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x3d\x0a\x09\x01\x3c\x36\x09",
            "\x10\x09\x01\uffff\x04\x09\x01\x3d\x0a\x09\x01\x3c\x36\x09"
    };

    static readonly short[] DFA17_eot = DFA.UnpackEncodedString(DFA17_eotS);
    static readonly short[] DFA17_eof = DFA.UnpackEncodedString(DFA17_eofS);
    static readonly char[] DFA17_min = DFA.UnpackEncodedStringToUnsignedChars(DFA17_minS);
    static readonly char[] DFA17_max = DFA.UnpackEncodedStringToUnsignedChars(DFA17_maxS);
    static readonly short[] DFA17_accept = DFA.UnpackEncodedString(DFA17_acceptS);
    static readonly short[] DFA17_special = DFA.UnpackEncodedString(DFA17_specialS);
    static readonly short[][] DFA17_transition = DFA.UnpackEncodedStringArray(DFA17_transitionS);

    protected class DFA17 : DFA
    {
        public DFA17(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 17;
            this.eot = DFA17_eot;
            this.eof = DFA17_eof;
            this.min = DFA17_min;
            this.max = DFA17_max;
            this.accept = DFA17_accept;
            this.special = DFA17_special;
            this.transition = DFA17_transition;

        }

        override public string Description
        {
            get { return "67:44: (ta= typ )?"; }
        }

    }


    protected internal int DFA17_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA17_1 = input.LA(1);

                   	 
                   	int index17_1 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred17_GrammaireZ2Enu()) ) { s = 10; }

                   	else if ( (true) ) { s = 9; }

                   	 
                   	input.Seek(index17_1);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 1 : 
                   	int LA17_58 = input.LA(1);

                   	 
                   	int index17_58 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred17_GrammaireZ2Enu()) ) { s = 10; }

                   	else if ( (true) ) { s = 9; }

                   	 
                   	input.Seek(index17_58);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 2 : 
                   	int LA17_18 = input.LA(1);

                   	 
                   	int index17_18 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred17_GrammaireZ2Enu()) ) { s = 10; }

                   	else if ( (true) ) { s = 9; }

                   	 
                   	input.Seek(index17_18);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 3 : 
                   	int LA17_45 = input.LA(1);

                   	 
                   	int index17_45 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred17_GrammaireZ2Enu()) ) { s = 10; }

                   	else if ( (true) ) { s = 9; }

                   	 
                   	input.Seek(index17_45);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 4 : 
                   	int LA17_7 = input.LA(1);

                   	 
                   	int index17_7 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred17_GrammaireZ2Enu()) ) { s = 10; }

                   	else if ( (true) ) { s = 9; }

                   	 
                   	input.Seek(index17_7);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 5 : 
                   	int LA17_29 = input.LA(1);

                   	 
                   	int index17_29 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred17_GrammaireZ2Enu()) ) { s = 10; }

                   	else if ( (true) ) { s = 9; }

                   	 
                   	input.Seek(index17_29);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 6 : 
                   	int LA17_14 = input.LA(1);

                   	 
                   	int index17_14 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred17_GrammaireZ2Enu()) ) { s = 10; }

                   	else if ( (true) ) { s = 9; }

                   	 
                   	input.Seek(index17_14);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae17 =
            new NoViableAltException(dfa.Description, 17, _s, input);
        dfa.Error(nvae17);
        throw nvae17;
    }
    const string DFA25_eotS =
        "\u009a\uffff";
    const string DFA25_eofS =
        "\u009a\uffff";
    const string DFA25_minS =
        "\x02\x04\x01\uffff\x03\x04\x01\x00\x05\x04\x01\x00\x01\x04\x01"+
        "\x00\x01\x04\x01\uffff\x03\x04\x01\x00\x04\x04\x01\x00\x12\x04\x01"+
        "\x00\x05\x04\x01\x00\x1f\x04\x01\x00\x25\x04\x01\x00\x21\x04";
    const string DFA25_maxS =
        "\x02\x5a\x01\uffff\x03\x5a\x01\x00\x05\x5a\x01\x00\x01\x5a\x01"+
        "\x00\x01\x5a\x01\uffff\x03\x5a\x01\x00\x04\x5a\x01\x00\x12\x5a\x01"+
        "\x00\x05\x5a\x01\x00\x1f\x5a\x01\x00\x25\x5a\x01\x00\x21\x5a";
    const string DFA25_acceptS =
        "\x02\uffff\x01\x02\x0d\uffff\x01\x01\u0089\uffff";
    const string DFA25_specialS =
        "\x06\uffff\x01\x02\x05\uffff\x01\x06\x01\uffff\x01\x00\x05\uffff"+
        "\x01\x04\x04\uffff\x01\x03\x12\uffff\x01\x05\x05\uffff\x01\x01\x1f"+
        "\uffff\x01\x07\x25\uffff\x01\x08\x21\uffff}>";
    static readonly string[] DFA25_transitionS = {
            "\x01\x01\x0f\x02\x01\uffff\x46\x02",
            "\x01\x02\x01\x04\x0e\x02\x01\uffff\x0f\x02\x01\x03\x36\x02",
            "",
            "\x01\x05\x0f\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\x06\x01\x02\x01\x0c\x0b\x02\x01\uffff\x02\x02"+
            "\x01\x0e\x01\x08\x01\x02\x01\x0f\x02\x02\x02\x09\x02\x02\x01"+
            "\x0d\x01\x0b\x03\x02\x01\x07\x01\x0a\x33\x02",
            "\x01\x02\x01\x04\x0e\x02\x01\uffff\x0f\x02\x01\x03\x36\x02",
            "\x01\uffff",
            "\x10\x02\x01\uffff\x03\x02\x01\x08\x42\x02",
            "\x02\x02\x01\x11\x0d\x02\x01\uffff\x0d\x02\x01\x12\x38\x02",
            "\x10\x02\x01\uffff\x0a\x02\x01\x13\x3b\x02",
            "\x03\x02\x01\x14\x0c\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x15\x42\x02",
            "\x01\uffff",
            "\x10\x02\x01\uffff\x0b\x02\x01\x16\x3a\x02",
            "\x01\uffff",
            "\x10\x02\x01\uffff\x03\x02\x01\x17\x42\x02",
            "",
            "\x10\x02\x01\uffff\x04\x02\x01\x19\x0a\x02\x01\x18\x36\x02",
            "\x03\x02\x01\x1a\x0c\x02\x01\uffff\x46\x02",
            "\x04\x02\x01\x0c\x0b\x02\x01\uffff\x0d\x02\x01\x0b\x04\x02"+
            "\x01\x0a\x33\x02",
            "\x01\uffff",
            "\x03\x02\x01\x1b\x0c\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\x1c\x0d\x02\x01\uffff\x03\x02\x01\x1f\x09\x02"+
            "\x01\x1d\x03\x02\x01\x1e\x34\x02",
            "\x02\x02\x01\x20\x01\x02\x01\x26\x0b\x02\x01\uffff\x03\x02"+
            "\x01\x22\x04\x02\x02\x23\x02\x02\x01\x27\x01\x25\x03\x02\x01"+
            "\x21\x01\x24\x33\x02",
            "\x02\x02\x01\x28\x0d\x02\x01\uffff\x0d\x02\x01\x29\x38\x02",
            "\x01\uffff",
            "\x10\x02\x01\uffff\x0b\x02\x01\x2a\x3a\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x2c\x0a\x02\x01\x2b\x36\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x2e\x0a\x02\x01\x2d\x37\x02",
            "\x03\x02\x01\x2f\x0c\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x1f\x42\x02",
            "\x02\x02\x01\x30\x0d\x02\x01\uffff\x0d\x02\x01\x31\x38\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x41\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x22\x42\x02",
            "\x02\x02\x01\x33\x0d\x02\x01\uffff\x0d\x02\x01\x34\x38\x02",
            "\x10\x02\x01\uffff\x0a\x02\x01\x35\x3b\x02",
            "\x03\x02\x01\x36\x0c\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x37\x42\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x06\x02\x01\x38\x3a\x02",
            "\x10\x02\x01\uffff\x0b\x02\x01\x39\x3a\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x19\x0a\x02\x01\x18\x36\x02",
            "\x03\x02\x01\x3a\x0c\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\x3b\x0d\x02\x01\uffff\x46\x02",
            "\x03\x02\x01\x3c\x0c\x02\x01\uffff\x46\x02",
            "\x01\uffff",
            "\x10\x02\x01\uffff\x03\x02\x01\x2e\x42\x02",
            "\x02\x02\x01\x3d\x0d\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x0b\x02\x01\x3e\x3a\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x40\x0a\x02\x01\x3f\x36\x02",
            "\x03\x02\x01\x41\x0c\x02\x01\uffff\x46\x02",
            "\x01\uffff",
            "\x10\x02\x01\uffff\x04\x02\x01\x43\x0a\x02\x01\x42\x36\x02",
            "\x03\x02\x01\x44\x0c\x02\x01\uffff\x46\x02",
            "\x04\x02\x01\x26\x0b\x02\x01\uffff\x0d\x02\x01\x25\x04\x02"+
            "\x01\x24\x33\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x06\x02\x01\x38\x3a\x02",
            "\x03\x02\x01\x45\x0c\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\x46\x01\x02\x01\x49\x0b\x02\x01\uffff\x03\x02"+
            "\x01\x4b\x09\x02\x01\x48\x03\x02\x01\x4a\x01\x47\x33\x02",
            "\x02\x02\x01\x4c\x0d\x02\x01\uffff\x03\x02\x01\x4f\x09\x02"+
            "\x01\x4d\x03\x02\x01\x4e\x34\x02",
            "\x10\x02\x01\uffff\x0b\x02\x01\x50\x3a\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x52\x0a\x02\x01\x51\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x2c\x0a\x02\x01\x2b\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x54\x0a\x02\x01\x53\x36\x02",
            "\x02\x02\x01\x55\x0d\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\x56\x0d\x02\x01\uffff\x0d\x02\x01\x57\x38\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x2e\x0a\x02\x01\x2d\x37\x02",
            "\x10\x02\x01\uffff\x0b\x02\x01\x58\x3a\x02",
            "\x02\x02\x01\x59\x0d\x02\x01\uffff\x0d\x02\x01\x5a\x38\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x02\x02\x01\x5b\x3e\x02",
            "\x10\x02\x01\uffff\x0b\x02\x01\x5c\x3a\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x5e\x0a\x02\x01\x5d\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x41\x02",
            "\x03\x02\x01\x5f\x0c\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x60\x42\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x06\x02\x01\x38\x3a\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x4b\x42\x02",
            "\x02\x02\x01\x61\x0d\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x63\x0a\x02\x01\x62\x37\x02",
            "\x03\x02\x01\x64\x0c\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x4f\x42\x02",
            "\x02\x02\x01\x65\x0d\x02\x01\uffff\x0d\x02\x01\x66\x38\x02",
            "\x02\x02\x01\x67\x0d\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\x68\x0d\x02\x01\uffff\x0d\x02\x01\x29\x38\x02",
            "\x01\uffff",
            "\x02\x02\x01\x69\x0d\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x10\x02\x01\x6a\x35\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x2e\x0a\x02\x01\x2d\x37\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x40\x0a\x02\x01\x3f\x36\x02",
            "\x03\x02\x01\x6b\x0c\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\x6c\x0d\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x43\x0a\x02\x01\x42\x36\x02",
            "\x03\x02\x01\x6d\x0c\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x41\x02",
            "\x02\x02\x01\x6e\x0d\x02\x01\uffff\x46\x02",
            "\x03\x02\x01\x6f\x0c\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x06\x02\x01\x38\x3a\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x06\x02\x01\x38\x3a\x02",
            "\x03\x02\x01\x70\x0c\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x72\x0a\x02\x01\x71\x36\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x63\x42\x02",
            "\x02\x02\x01\x73\x0d\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x0b\x02\x01\x74\x3a\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x76\x0a\x02\x01\x75\x36\x02",
            "\x03\x02\x01\x77\x0c\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x52\x0a\x02\x01\x51\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x52\x0a\x02\x01\x51\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x54\x0a\x02\x01\x53\x36\x02",
            "\x01\x78\x0f\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x0b\x02\x01\x79\x3a\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x7b\x0a\x02\x01\x7a\x36\x02",
            "\x10\x02\x01\uffff\x0b\x02\x01\x7c\x3a\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x7e\x0a\x02\x01\x7d\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x5e\x0a\x02\x01\x5d\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\u0080\x0a\x02\x01\x7f\x36\x02",
            "\x02\x02\x01\u0081\x0d\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x02\x02\x01\u0082\x3e\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\u0084\x0a\x02\x01\u0083\x36"+
            "\x02",
            "\x02\x02\x01\u0085\x0d\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\u0086\x0d\x02\x01\uffff\x0d\x02\x01\u0087\x38"+
            "\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x63\x0a\x02\x01\x62\x37\x02",
            "\x10\x02\x01\uffff\x0b\x02\x01\u0088\x3a\x02",
            "\x01\uffff",
            "\x02\x02\x01\u0089\x0d\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\u008a\x0d\x02\x01\uffff\x0d\x02\x01\x57\x38\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x2e\x0a\x02\x01\x2d\x37\x02",
            "\x02\x02\x01\u008b\x0d\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\u008c\x0d\x02\x01\uffff\x0d\x02\x01\x5a\x38\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x02\x02\x01\x5b\x3e\x02",
            "\x03\x02\x01\u008d\x0c\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x06\x02\x01\x38\x3a\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x72\x0a\x02\x01\x71\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x41\x02",
            "\x02\x02\x01\u008e\x0d\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x10\x02\x01\u008f\x35\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x63\x0a\x02\x01\x62\x37\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x76\x0a\x02\x01\x75\x36\x02",
            "\x03\x02\x01\u0090\x0c\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\u0091\x0d\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x7b\x0a\x02\x01\x7a\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x7b\x0a\x02\x01\x7a\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x7e\x0a\x02\x01\x7d\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x7e\x0a\x02\x01\x7d\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\u0080\x0a\x02\x01\x7f\x36\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\u0084\x0a\x02\x01\u0083\x36"+
            "\x02",
            "\x01\u0092\x0f\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x0b\x02\x01\u0093\x3a\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\u0095\x0a\x02\x01\u0094\x36"+
            "\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x0a\x02\x01\u0096\x36\x02",
            "\x02\x02\x01\u0097\x0d\x02\x01\uffff\x46\x02",
            "\x02\x02\x01\u0098\x0d\x02\x01\uffff\x0d\x02\x01\u0087\x38"+
            "\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x63\x0a\x02\x01\x62\x37\x02",
            "\x01\u0099\x0f\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\u0095\x0a\x02\x01\u0094\x36"+
            "\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\u0095\x0a\x02\x01\u0094\x36"+
            "\x02",
            "\x10\x02\x01\uffff\x04\x02\x01\x32\x0a\x02\x01\u0096\x36\x02"
    };

    static readonly short[] DFA25_eot = DFA.UnpackEncodedString(DFA25_eotS);
    static readonly short[] DFA25_eof = DFA.UnpackEncodedString(DFA25_eofS);
    static readonly char[] DFA25_min = DFA.UnpackEncodedStringToUnsignedChars(DFA25_minS);
    static readonly char[] DFA25_max = DFA.UnpackEncodedStringToUnsignedChars(DFA25_maxS);
    static readonly short[] DFA25_accept = DFA.UnpackEncodedString(DFA25_acceptS);
    static readonly short[] DFA25_special = DFA.UnpackEncodedString(DFA25_specialS);
    static readonly short[][] DFA25_transition = DFA.UnpackEncodedStringArray(DFA25_transitionS);

    protected class DFA25 : DFA
    {
        public DFA25(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 25;
            this.eot = DFA25_eot;
            this.eof = DFA25_eof;
            this.min = DFA25_min;
            this.max = DFA25_max;
            this.accept = DFA25_accept;
            this.special = DFA25_special;
            this.transition = DFA25_transition;

        }

        override public string Description
        {
            get { return "90:1: s returns [List<VariableDeclare> ids = new List<VariableDeclare>(), string type] : ( ( li ( Sep ) (t1= typ | (a1= 'action' | f1= 'function' '(' t2= typ ')' ) ) ) | (ii= lisIngnoreBeginSemiColon ) );"; }
        }

    }


    protected internal int DFA25_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA25_14 = input.LA(1);

                   	 
                   	int index25_14 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred25_GrammaireZ2Enu()) ) { s = 16; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_14);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 1 : 
                   	int LA25_50 = input.LA(1);

                   	 
                   	int index25_50 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred25_GrammaireZ2Enu()) ) { s = 16; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_50);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 2 : 
                   	int LA25_6 = input.LA(1);

                   	 
                   	int index25_6 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred25_GrammaireZ2Enu()) ) { s = 16; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_6);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 3 : 
                   	int LA25_25 = input.LA(1);

                   	 
                   	int index25_25 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred25_GrammaireZ2Enu()) ) { s = 16; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_25);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 4 : 
                   	int LA25_20 = input.LA(1);

                   	 
                   	int index25_20 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred25_GrammaireZ2Enu()) ) { s = 16; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_20);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 5 : 
                   	int LA25_44 = input.LA(1);

                   	 
                   	int index25_44 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred25_GrammaireZ2Enu()) ) { s = 16; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_44);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 6 : 
                   	int LA25_12 = input.LA(1);

                   	 
                   	int index25_12 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred25_GrammaireZ2Enu()) ) { s = 16; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_12);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 7 : 
                   	int LA25_82 = input.LA(1);

                   	 
                   	int index25_82 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred25_GrammaireZ2Enu()) ) { s = 16; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_82);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 8 : 
                   	int LA25_120 = input.LA(1);

                   	 
                   	int index25_120 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred25_GrammaireZ2Enu()) ) { s = 16; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index25_120);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae25 =
            new NoViableAltException(dfa.Description, 25, _s, input);
        dfa.Error(nvae25);
        throw nvae25;
    }
    const string DFA26_eotS =
        "\x09\uffff";
    const string DFA26_eofS =
        "\x09\uffff";
    const string DFA26_minS =
        "\x02\x18\x01\x06\x01\x19\x01\uffff\x01\x06\x01\x00\x01\x19\x01"+
        "\uffff";
    const string DFA26_maxS =
        "\x01\x26\x01\x18\x01\x22\x01\x24\x01\uffff\x01\x22\x01\x00\x01"+
        "\x24\x01\uffff";
    const string DFA26_acceptS =
        "\x04\uffff\x01\x02\x03\uffff\x01\x01";
    const string DFA26_specialS =
        "\x06\uffff\x01\x00\x02\uffff}>";
    static readonly string[] DFA26_transitionS = {
            "\x01\x02\x0d\uffff\x01\x01",
            "\x01\x02",
            "\x01\x03\x1b\uffff\x01\x04",
            "\x01\x06\x0a\uffff\x01\x05",
            "",
            "\x01\x07\x1b\uffff\x01\x04",
            "\x01\uffff",
            "\x01\x06\x0a\uffff\x01\x05",
            ""
    };

    static readonly short[] DFA26_eot = DFA.UnpackEncodedString(DFA26_eotS);
    static readonly short[] DFA26_eof = DFA.UnpackEncodedString(DFA26_eofS);
    static readonly char[] DFA26_min = DFA.UnpackEncodedStringToUnsignedChars(DFA26_minS);
    static readonly char[] DFA26_max = DFA.UnpackEncodedStringToUnsignedChars(DFA26_maxS);
    static readonly short[] DFA26_accept = DFA.UnpackEncodedString(DFA26_acceptS);
    static readonly short[] DFA26_special = DFA.UnpackEncodedString(DFA26_specialS);
    static readonly short[][] DFA26_transition = DFA.UnpackEncodedStringArray(DFA26_transitionS);

    protected class DFA26 : DFA
    {
        public DFA26(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 26;
            this.eot = DFA26_eot;
            this.eof = DFA26_eof;
            this.min = DFA26_min;
            this.max = DFA26_max;
            this.accept = DFA26_accept;
            this.special = DFA26_special;
            this.transition = DFA26_transition;

        }

        override public string Description
        {
            get { return "105:4: ( structsimple | structcomplexe )"; }
        }

    }


    protected internal int DFA26_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA26_6 = input.LA(1);

                   	 
                   	int index26_6 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred27_GrammaireZ2Enu()) ) { s = 8; }

                   	else if ( (true) ) { s = 4; }

                   	 
                   	input.Seek(index26_6);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae26 =
            new NoViableAltException(dfa.Description, 26, _s, input);
        dfa.Error(nvae26);
        throw nvae26;
    }
    const string DFA29_eotS =
        "\x0d\uffff";
    const string DFA29_eofS =
        "\x01\x02\x0c\uffff";
    const string DFA29_minS =
        "\x02\x04\x01\uffff\x02\x04\x02\x00\x01\x04\x01\uffff\x02\x04\x01"+
        "\x00\x01\x04";
    const string DFA29_maxS =
        "\x02\x5a\x01\uffff\x02\x5a\x02\x00\x01\x5a\x01\uffff\x02\x5a\x01"+
        "\x00\x01\x5a";
    const string DFA29_acceptS =
        "\x02\uffff\x01\x02\x05\uffff\x01\x01\x04\uffff";
    const string DFA29_specialS =
        "\x05\uffff\x01\x00\x01\x02\x04\uffff\x01\x01\x01\uffff}>";
    static readonly string[] DFA29_transitionS = {
            "\x1c\x02\x01\x01\x3a\x02",
            "\x04\x02\x01\x05\x0b\x02\x01\uffff\x0d\x02\x01\x04\x04\x02"+
            "\x01\x03\x33\x02",
            "",
            "\x03\x02\x01\x06\x0c\x02\x01\uffff\x46\x02",
            "\x10\x02\x01\uffff\x03\x02\x01\x07\x42\x02",
            "\x01\uffff",
            "\x01\uffff",
            "\x03\x02\x01\x09\x0c\x02\x01\uffff\x46\x02",
            "",
            "\x10\x02\x01\uffff\x04\x02\x01\x0b\x0a\x02\x01\x0a\x36\x02",
            "\x03\x02\x01\x0c\x0c\x02\x01\uffff\x46\x02",
            "\x01\uffff",
            "\x10\x02\x01\uffff\x04\x02\x01\x0b\x0a\x02\x01\x0a\x36\x02"
    };

    static readonly short[] DFA29_eot = DFA.UnpackEncodedString(DFA29_eotS);
    static readonly short[] DFA29_eof = DFA.UnpackEncodedString(DFA29_eofS);
    static readonly char[] DFA29_min = DFA.UnpackEncodedStringToUnsignedChars(DFA29_minS);
    static readonly char[] DFA29_max = DFA.UnpackEncodedStringToUnsignedChars(DFA29_maxS);
    static readonly short[] DFA29_accept = DFA.UnpackEncodedString(DFA29_acceptS);
    static readonly short[] DFA29_special = DFA.UnpackEncodedString(DFA29_specialS);
    static readonly short[][] DFA29_transition = DFA.UnpackEncodedStringArray(DFA29_transitionS);

    protected class DFA29 : DFA
    {
        public DFA29(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 29;
            this.eot = DFA29_eot;
            this.eof = DFA29_eof;
            this.min = DFA29_min;
            this.max = DFA29_max;
            this.accept = DFA29_accept;
            this.special = DFA29_special;
            this.transition = DFA29_transition;

        }

        override public string Description
        {
            get { return "()* loopback of 106:46: ( 'of' typecomp )*"; }
        }

    }


    protected internal int DFA29_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA29_5 = input.LA(1);

                   	 
                   	int index29_5 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred32_GrammaireZ2Enu()) ) { s = 8; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index29_5);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 1 : 
                   	int LA29_11 = input.LA(1);

                   	 
                   	int index29_11 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred32_GrammaireZ2Enu()) ) { s = 8; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index29_11);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 2 : 
                   	int LA29_6 = input.LA(1);

                   	 
                   	int index29_6 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred32_GrammaireZ2Enu()) ) { s = 8; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index29_6);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae29 =
            new NoViableAltException(dfa.Description, 29, _s, input);
        dfa.Error(nvae29);
        throw nvae29;
    }
    const string DFA31_eotS =
        "\x0c\uffff";
    const string DFA31_eofS =
        "\x01\x02\x0b\uffff";
    const string DFA31_minS =
        "\x02\x04\x01\uffff\x01\x00\x02\x04\x01\uffff\x02\x04\x01\x00\x01"+
        "\x04\x01\uffff";
    const string DFA31_maxS =
        "\x02\x5a\x01\uffff\x01\x00\x02\x5a\x01\uffff\x02\x5a\x01\x00\x01"+
        "\x5a\x01\uffff";
    const string DFA31_acceptS =
        "\x02\uffff\x01\x03\x03\uffff\x01\x02\x04\uffff\x01\x01";
    const string DFA31_specialS =
        "\x03\uffff\x01\x00\x05\uffff\x01\x01\x02\uffff}>";
    static readonly string[] DFA31_transitionS = {
            "\x1c\x02\x01\x01\x3a\x02",
            "\x02\x02\x01\x03\x0d\x02\x01\uffff\x03\x02\x01\x05\x0d\x02"+
            "\x01\x04\x34\x02",
            "",
            "\x01\uffff",
            "\x10\x02\x01\uffff\x03\x02\x01\x05\x42\x02",
            "\x02\x02\x01\x07\x0d\x02\x01\uffff\x46\x02",
            "",
            "\x10\x02\x01\uffff\x04\x02\x01\x09\x0a\x02\x01\x08\x36\x02",
            "\x02\x02\x01\x0a\x0d\x02\x01\uffff\x46\x02",
            "\x01\uffff",
            "\x10\x02\x01\uffff\x04\x02\x01\x09\x0a\x02\x01\x08\x36\x02",
            ""
    };

    static readonly short[] DFA31_eot = DFA.UnpackEncodedString(DFA31_eotS);
    static readonly short[] DFA31_eof = DFA.UnpackEncodedString(DFA31_eofS);
    static readonly char[] DFA31_min = DFA.UnpackEncodedStringToUnsignedChars(DFA31_minS);
    static readonly char[] DFA31_max = DFA.UnpackEncodedStringToUnsignedChars(DFA31_maxS);
    static readonly short[] DFA31_accept = DFA.UnpackEncodedString(DFA31_acceptS);
    static readonly short[] DFA31_special = DFA.UnpackEncodedString(DFA31_specialS);
    static readonly short[][] DFA31_transition = DFA.UnpackEncodedStringArray(DFA31_transitionS);

    protected class DFA31 : DFA
    {
        public DFA31(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 31;
            this.eot = DFA31_eot;
            this.eof = DFA31_eof;
            this.min = DFA31_min;
            this.max = DFA31_max;
            this.accept = DFA31_accept;
            this.special = DFA31_special;
            this.transition = DFA31_transition;

        }

        override public string Description
        {
            get { return "106:65: ( 'of' structsimple ( 'dynamic' )? | 'of' Types )?"; }
        }

    }


    protected internal int DFA31_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA31_3 = input.LA(1);

                   	 
                   	int index31_3 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred35_GrammaireZ2Enu()) ) { s = 6; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index31_3);
                   	if ( s >= 0 ) return s;
                   	break;
               	case 1 : 
                   	int LA31_9 = input.LA(1);

                   	 
                   	int index31_9 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred34_GrammaireZ2Enu()) ) { s = 11; }

                   	else if ( (true) ) { s = 2; }

                   	 
                   	input.Seek(index31_9);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae31 =
            new NoViableAltException(dfa.Description, 31, _s, input);
        dfa.Error(nvae31);
        throw nvae31;
    }
    const string DFA32_eotS =
        "\x0b\uffff";
    const string DFA32_eofS =
        "\x0b\uffff";
    const string DFA32_minS =
        "\x01\x06\x02\uffff\x01\x18\x01\x06\x01\x19\x01\uffff\x01\x06\x01"+
        "\x00\x01\x19\x01\uffff";
    const string DFA32_maxS =
        "\x01\x26\x02\uffff\x01\x18\x01\x22\x01\x24\x01\uffff\x01\x22\x01"+
        "\x00\x01\x24\x01\uffff";
    const string DFA32_acceptS =
        "\x01\uffff\x01\x01\x01\x02\x03\uffff\x01\x04\x03\uffff\x01\x03";
    const string DFA32_specialS =
        "\x08\uffff\x01\x00\x02\uffff}>";
    static readonly string[] DFA32_transitionS = {
            "\x01\x01\x11\uffff\x01\x04\x09\uffff\x01\x02\x03\uffff\x01"+
            "\x03",
            "",
            "",
            "\x01\x04",
            "\x01\x05\x1b\uffff\x01\x06",
            "\x01\x08\x0a\uffff\x01\x07",
            "",
            "\x01\x09\x1b\uffff\x01\x06",
            "\x01\uffff",
            "\x01\x08\x0a\uffff\x01\x07",
            ""
    };

    static readonly short[] DFA32_eot = DFA.UnpackEncodedString(DFA32_eotS);
    static readonly short[] DFA32_eof = DFA.UnpackEncodedString(DFA32_eofS);
    static readonly char[] DFA32_min = DFA.UnpackEncodedStringToUnsignedChars(DFA32_minS);
    static readonly char[] DFA32_max = DFA.UnpackEncodedStringToUnsignedChars(DFA32_maxS);
    static readonly short[] DFA32_accept = DFA.UnpackEncodedString(DFA32_acceptS);
    static readonly short[] DFA32_special = DFA.UnpackEncodedString(DFA32_specialS);
    static readonly short[][] DFA32_transition = DFA.UnpackEncodedStringArray(DFA32_transitionS);

    protected class DFA32 : DFA
    {
        public DFA32(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 32;
            this.eot = DFA32_eot;
            this.eof = DFA32_eof;
            this.min = DFA32_min;
            this.max = DFA32_max;
            this.accept = DFA32_accept;
            this.special = DFA32_special;
            this.transition = DFA32_transition;

        }

        override public string Description
        {
            get { return "107:16: ( Types | 'vector' ( CSTE ) 'of' Types | structsimple | structcomplexe )"; }
        }

    }


    protected internal int DFA32_SpecialStateTransition(DFA dfa, int s, IIntStream _input) //throws NoViableAltException
    {
            ITokenStream input = (ITokenStream)_input;
    	int _s = s;
        switch ( s )
        {
               	case 0 : 
                   	int LA32_8 = input.LA(1);

                   	 
                   	int index32_8 = input.Index();
                   	input.Rewind();
                   	s = -1;
                   	if ( (synpred39_GrammaireZ2Enu()) ) { s = 10; }

                   	else if ( (true) ) { s = 6; }

                   	 
                   	input.Seek(index32_8);
                   	if ( s >= 0 ) return s;
                   	break;
        }
        if (state.backtracking > 0) {state.failed = true; return -1;}
        NoViableAltException nvae32 =
            new NoViableAltException(dfa.Description, 32, _s, input);
        dfa.Error(nvae32);
        throw nvae32;
    }
 

    public static readonly BitSet FOLLOW_algoz_in_program65 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_algoz82 = new BitSet(new ulong[]{0xFFFFFFFFFFBFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_ps_in_algoz88 = new BitSet(new ulong[]{0x0000000000100000UL});
    public static readonly BitSet FOLLOW_20_in_algoz98 = new BitSet(new ulong[]{0xFFFFFFFFFFFFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_lisIngnoreEnd_in_algoz100 = new BitSet(new ulong[]{0x0000000000200000UL});
    public static readonly BitSet FOLLOW_21_in_algoz104 = new BitSet(new ulong[]{0x0000000004C00002UL});
    public static readonly BitSet FOLLOW_22_in_algoz107 = new BitSet(new ulong[]{0x0000000004800002UL});
    public static readonly BitSet FOLLOW_fonct_in_algoz122 = new BitSet(new ulong[]{0x0000000004C00002UL});
    public static readonly BitSet FOLLOW_act_in_algoz129 = new BitSet(new ulong[]{0x0000000004C00002UL});
    public static readonly BitSet FOLLOW_22_in_algoz133 = new BitSet(new ulong[]{0x0000000004800002UL});
    public static readonly BitSet FOLLOW_23_in_act164 = new BitSet(new ulong[]{0xFFFFFFFFFFFFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_ID_in_act168 = new BitSet(new ulong[]{0xFFFFFFFFFFFFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_24_in_act174 = new BitSet(new ulong[]{0x0000000002000010UL});
    public static readonly BitSet FOLLOW_li_in_act178 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_act181 = new BitSet(new ulong[]{0xFFFFFFFFFFFFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_22_in_act187 = new BitSet(new ulong[]{0xFFFFFFFFFFBFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_definition_in_act192 = new BitSet(new ulong[]{0xFFFFFFFFFFBFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_ps_in_act197 = new BitSet(new ulong[]{0x0000000000100000UL});
    public static readonly BitSet FOLLOW_20_in_act205 = new BitSet(new ulong[]{0xFFFFFFFFFFFFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_lisIngnoreEnd_in_act207 = new BitSet(new ulong[]{0x0000000000200000UL});
    public static readonly BitSet FOLLOW_21_in_act211 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_26_in_fonct238 = new BitSet(new ulong[]{0x0000000001000010UL});
    public static readonly BitSet FOLLOW_ID_in_fonct242 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_fonct245 = new BitSet(new ulong[]{0x0000000002000010UL});
    public static readonly BitSet FOLLOW_li_in_fonct249 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_fonct252 = new BitSet(new ulong[]{0x0000000008000000UL});
    public static readonly BitSet FOLLOW_27_in_fonct254 = new BitSet(new ulong[]{0xFFFFFFFFFFBFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_typ_in_fonct258 = new BitSet(new ulong[]{0xFFFFFFFFFFBFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_definition_in_fonct263 = new BitSet(new ulong[]{0xFFFFFFFFFFBFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_ps_in_fonct268 = new BitSet(new ulong[]{0x0000000000100000UL});
    public static readonly BitSet FOLLOW_20_in_fonct276 = new BitSet(new ulong[]{0xFFFFFFFFFFFFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_lisIngnoreEnd_in_fonct278 = new BitSet(new ulong[]{0x0000000000200000UL});
    public static readonly BitSet FOLLOW_21_in_fonct282 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_s_in_ps321 = new BitSet(new ulong[]{0x0000000000400000UL});
    public static readonly BitSet FOLLOW_22_in_ps329 = new BitSet(new ulong[]{0xFFFFFFFFFFAFFFF2UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_definition_in_ps337 = new BitSet(new ulong[]{0xFFFFFFFFFFAFFFF0UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_s_in_ps344 = new BitSet(new ulong[]{0x0000000000400000UL});
    public static readonly BitSet FOLLOW_22_in_ps352 = new BitSet(new ulong[]{0xFFFFFFFFFFAFFFF2UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_li_in_s373 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_Sep_in_s376 = new BitSet(new ulong[]{0x000000C665800140UL});
    public static readonly BitSet FOLLOW_typ_in_s384 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_23_in_s393 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_26_in_s401 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_s403 = new BitSet(new ulong[]{0x000000C661000140UL});
    public static readonly BitSet FOLLOW_typ_in_s409 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_s411 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_lisIngnoreBeginSemiColon_in_s432 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_Types_in_typ452 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_structsimple_in_typ461 = new BitSet(new ulong[]{0x0000000010000002UL});
    public static readonly BitSet FOLLOW_structcomplexe_in_typ465 = new BitSet(new ulong[]{0x0000000010000002UL});
    public static readonly BitSet FOLLOW_28_in_typ469 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_typ478 = new BitSet(new ulong[]{0x0000000080000000UL});
    public static readonly BitSet FOLLOW_31_in_typ486 = new BitSet(new ulong[]{0x0000008460000100UL});
    public static readonly BitSet FOLLOW_typecomp_in_typ490 = new BitSet(new ulong[]{0x0000000100000002UL});
    public static readonly BitSet FOLLOW_32_in_typ493 = new BitSet(new ulong[]{0x0000008460000100UL});
    public static readonly BitSet FOLLOW_typecomp_in_typ495 = new BitSet(new ulong[]{0x0000000100000002UL});
    public static readonly BitSet FOLLOW_32_in_typ502 = new BitSet(new ulong[]{0x0000004001000000UL});
    public static readonly BitSet FOLLOW_structsimple_in_typ504 = new BitSet(new ulong[]{0x0000000010000002UL});
    public static readonly BitSet FOLLOW_28_in_typ506 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_32_in_typ511 = new BitSet(new ulong[]{0x0000000000000040UL});
    public static readonly BitSet FOLLOW_Types_in_typ513 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_33_in_typ523 = new BitSet(new ulong[]{0x0000000100000000UL});
    public static readonly BitSet FOLLOW_32_in_typ525 = new BitSet(new ulong[]{0x0000004401000040UL});
    public static readonly BitSet FOLLOW_Types_in_typ529 = new BitSet(new ulong[]{0x0000000801000000UL});
    public static readonly BitSet FOLLOW_34_in_typ533 = new BitSet(new ulong[]{0x0000000000000080UL});
    public static readonly BitSet FOLLOW_CSTE_in_typ535 = new BitSet(new ulong[]{0x0000000100000000UL});
    public static readonly BitSet FOLLOW_32_in_typ538 = new BitSet(new ulong[]{0x0000000000000040UL});
    public static readonly BitSet FOLLOW_Types_in_typ540 = new BitSet(new ulong[]{0x0000000801000000UL});
    public static readonly BitSet FOLLOW_structsimple_in_typ545 = new BitSet(new ulong[]{0x0000000801000000UL});
    public static readonly BitSet FOLLOW_structcomplexe_in_typ549 = new BitSet(new ulong[]{0x0000000801000000UL});
    public static readonly BitSet FOLLOW_35_in_typ553 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_typ556 = new BitSet(new ulong[]{0x0000000000000040UL});
    public static readonly BitSet FOLLOW_Types_in_typ558 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_36_in_typ562 = new BitSet(new ulong[]{0x0000000000000040UL});
    public static readonly BitSet FOLLOW_Types_in_typ564 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_25_in_typ568 = new BitSet(new ulong[]{0x0000002000000000UL});
    public static readonly BitSet FOLLOW_37_in_typ570 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_li_in_typ572 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_38_in_structsimple588 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_structsimple591 = new BitSet(new ulong[]{0x0000000000000040UL});
    public static readonly BitSet FOLLOW_Types_in_structsimple593 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_36_in_structsimple597 = new BitSet(new ulong[]{0x0000000000000040UL});
    public static readonly BitSet FOLLOW_Types_in_structsimple599 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_25_in_structsimple604 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_38_in_structcomplexe615 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_structcomplexe618 = new BitSet(new ulong[]{0x0000000400000040UL});
    public static readonly BitSet FOLLOW_Types_in_structcomplexe622 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_34_in_structcomplexe626 = new BitSet(new ulong[]{0x0000000000000080UL});
    public static readonly BitSet FOLLOW_CSTE_in_structcomplexe629 = new BitSet(new ulong[]{0x0000000100000000UL});
    public static readonly BitSet FOLLOW_32_in_structcomplexe632 = new BitSet(new ulong[]{0x0000000000000040UL});
    public static readonly BitSet FOLLOW_Types_in_structcomplexe634 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_36_in_structcomplexe640 = new BitSet(new ulong[]{0x0000000400000040UL});
    public static readonly BitSet FOLLOW_Types_in_structcomplexe644 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_34_in_structcomplexe648 = new BitSet(new ulong[]{0x0000000000000080UL});
    public static readonly BitSet FOLLOW_CSTE_in_structcomplexe651 = new BitSet(new ulong[]{0x0000000100000000UL});
    public static readonly BitSet FOLLOW_32_in_structcomplexe654 = new BitSet(new ulong[]{0x0000000000000040UL});
    public static readonly BitSet FOLLOW_Types_in_structcomplexe656 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_25_in_structcomplexe664 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_39_in_typecomp677 = new BitSet(new ulong[]{0x0000000000000080UL});
    public static readonly BitSet FOLLOW_CSTE_in_typecomp680 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_34_in_typecomp685 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_typecomp687 = new BitSet(new ulong[]{0x0000000000000080UL});
    public static readonly BitSet FOLLOW_listecste_in_typecomp689 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_typecomp691 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_Autres_in_typecomp695 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_CSTE_in_listecste829 = new BitSet(new ulong[]{0x0000001000000002UL});
    public static readonly BitSet FOLLOW_36_in_listecste833 = new BitSet(new ulong[]{0x0000000000000080UL});
    public static readonly BitSet FOLLOW_CSTE_in_listecste835 = new BitSet(new ulong[]{0x0000001000000002UL});
    public static readonly BitSet FOLLOW_ID_in_li858 = new BitSet(new ulong[]{0x0000001000000002UL});
    public static readonly BitSet FOLLOW_36_in_li865 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_li869 = new BitSet(new ulong[]{0x0000001000000002UL});
    public static readonly BitSet FOLLOW_inst_in_lis885 = new BitSet(new ulong[]{0x00F8890000403E12UL});
    public static readonly BitSet FOLLOW_22_in_lis889 = new BitSet(new ulong[]{0x00F8890000403E10UL});
    public static readonly BitSet FOLLOW_inst_in_lis892 = new BitSet(new ulong[]{0x00F8890000403E12UL});
    public static readonly BitSet FOLLOW_40_in_inst913 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst915 = new BitSet(new ulong[]{0x00F8890008403E10UL});
    public static readonly BitSet FOLLOW_27_in_inst917 = new BitSet(new ulong[]{0x00F8890008403E10UL});
    public static readonly BitSet FOLLOW_lis_in_inst921 = new BitSet(new ulong[]{0x0000060000000000UL});
    public static readonly BitSet FOLLOW_set_in_inst923 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_43_in_inst936 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst938 = new BitSet(new ulong[]{0x00F8890008403E10UL});
    public static readonly BitSet FOLLOW_27_in_inst940 = new BitSet(new ulong[]{0x00F8890008403E10UL});
    public static readonly BitSet FOLLOW_lis_in_inst943 = new BitSet(new ulong[]{0x0000700000000000UL});
    public static readonly BitSet FOLLOW_44_in_inst946 = new BitSet(new ulong[]{0x00F8890008403E10UL});
    public static readonly BitSet FOLLOW_lis_in_inst949 = new BitSet(new ulong[]{0x0000600000000000UL});
    public static readonly BitSet FOLLOW_set_in_inst953 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_47_in_inst965 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_inst967 = new BitSet(new ulong[]{0x0001000000000000UL});
    public static readonly BitSet FOLLOW_48_in_inst969 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst971 = new BitSet(new ulong[]{0x0000001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst973 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst975 = new BitSet(new ulong[]{0x00F8891008403E10UL});
    public static readonly BitSet FOLLOW_36_in_inst978 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst980 = new BitSet(new ulong[]{0x00F8890008403E10UL});
    public static readonly BitSet FOLLOW_27_in_inst984 = new BitSet(new ulong[]{0x00F8890008403E10UL});
    public static readonly BitSet FOLLOW_lis_in_inst988 = new BitSet(new ulong[]{0x0006000000000000UL});
    public static readonly BitSet FOLLOW_set_in_inst991 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_ID_in_inst1003 = new BitSet(new ulong[]{0x0001000000000000UL});
    public static readonly BitSet FOLLOW_48_in_inst1005 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1007 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_51_in_inst1013 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_inst1015 = new BitSet(new ulong[]{0x0000000001000002UL});
    public static readonly BitSet FOLLOW_24_in_inst1018 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1019 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1022 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1023 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_25_in_inst1026 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_52_in_inst1034 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_inst1036 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_inst1038 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1041 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_inst1043 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_25_in_inst1048 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_53_in_inst1054 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_inst1056 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1058 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1061 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1062 = new BitSet(new ulong[]{0x0000001002000000UL});
    public static readonly BitSet FOLLOW_25_in_inst1066 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_54_in_inst1072 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_inst1074 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1076 = new BitSet(new ulong[]{0x0000001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1078 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1080 = new BitSet(new ulong[]{0x0000001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1082 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1084 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_inst1086 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_55_in_inst1092 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_inst1094 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1096 = new BitSet(new ulong[]{0x0100000000000000UL});
    public static readonly BitSet FOLLOW_56_in_inst1098 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1100 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1104 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1106 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_57_in_inst1112 = new BitSet(new ulong[]{0x0000001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1114 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1116 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_inst1118 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_Proc26_in_inst1124 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_inst1126 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1128 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_inst1130 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_Proc53_in_inst1136 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_inst1138 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_inst1140 = new BitSet(new ulong[]{0x0000001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1142 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_inst1144 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_inst1146 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_Proc50_in_inst1152 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_inst1154 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1156 = new BitSet(new ulong[]{0x0000001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1158 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1160 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_inst1162 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_Proc39_in_inst1168 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_inst1170 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_inst1172 = new BitSet(new ulong[]{0x0000001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1174 = new BitSet(new ulong[]{0x0100000000000000UL});
    public static readonly BitSet FOLLOW_56_in_inst1176 = new BitSet(new ulong[]{0xED00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1180 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_56_in_inst1184 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1186 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1190 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1192 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_57_in_inst1198 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1205 = new BitSet(new ulong[]{0xED00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1208 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_56_in_inst1212 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1214 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1218 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1220 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_57_in_inst1225 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_57_in_inst1231 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_inst1233 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_Proc30_in_inst1239 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_inst1241 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1243 = new BitSet(new ulong[]{0x0000001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1245 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1247 = new BitSet(new ulong[]{0x0000001000000000UL});
    public static readonly BitSet FOLLOW_36_in_inst1249 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_inst1251 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_inst1253 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_exps_in_exp1477 = new BitSet(new ulong[]{0x0000000000004002UL});
    public static readonly BitSet FOLLOW_Opr_in_exp1481 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exps_in_exp1483 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_exps1498 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_terme_in_exps1506 = new BitSet(new ulong[]{0x1C00000000000002UL});
    public static readonly BitSet FOLLOW_set_in_exps1510 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_terme_in_exps1522 = new BitSet(new ulong[]{0x1C00000000000002UL});
    public static readonly BitSet FOLLOW_terme_in_exps1534 = new BitSet(new ulong[]{0x1C00000000000002UL});
    public static readonly BitSet FOLLOW_set_in_exps1538 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_terme_in_exps1550 = new BitSet(new ulong[]{0x1C00000000000002UL});
    public static readonly BitSet FOLLOW_facteur_in_terme1564 = new BitSet(new ulong[]{0x0000000000008002UL});
    public static readonly BitSet FOLLOW_Opm_in_terme1566 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_facteur_in_terme1568 = new BitSet(new ulong[]{0x0000000000008002UL});
    public static readonly BitSet FOLLOW_ID_in_facteur1585 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_CSTE_in_facteur1590 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_fonct_in_facteur1594 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_61_in_facteur1598 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_24_in_facteur1602 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_facteur1604 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_facteur1606 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_62_in_facteur1610 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_facteur_in_facteur1612 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_63_in_facteur1616 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_64_in_facteur1620 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_STRING_in_facteur1624 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_fonct27_in_fanct1638 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_fanct1641 = new BitSet(new ulong[]{0x0000000004000000UL});
    public static readonly BitSet FOLLOW_fonct_in_fanct1643 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_fanct1645 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_fonct57_in_fanct1652 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_fanct1655 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_fanct1657 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_fanct1659 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_fonct32_in_fanct1665 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_fanct1668 = new BitSet(new ulong[]{0x0000000004000000UL});
    public static readonly BitSet FOLLOW_fonct_in_fanct1670 = new BitSet(new ulong[]{0x0000001000000000UL});
    public static readonly BitSet FOLLOW_36_in_fanct1673 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_fanct1675 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_fanct1677 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_fonct34_in_fanct1695 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_fanct1697 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_fanct1699 = new BitSet(new ulong[]{0x0000001000000000UL});
    public static readonly BitSet FOLLOW_36_in_fanct1701 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_fanct1703 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_fanct1705 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_fonct58_in_fanct1711 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_fanct1713 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_65_in_fanct1719 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_fanct1722 = new BitSet(new ulong[]{0x0000000004000000UL});
    public static readonly BitSet FOLLOW_fonct_in_fanct1724 = new BitSet(new ulong[]{0x0100000000000000UL});
    public static readonly BitSet FOLLOW_56_in_fanct1726 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_fanct1728 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_36_in_fanct1731 = new BitSet(new ulong[]{0xEC00000005010090UL,0x0000000000000001UL});
    public static readonly BitSet FOLLOW_exp_in_fanct1733 = new BitSet(new ulong[]{0x0200001000000000UL});
    public static readonly BitSet FOLLOW_57_in_fanct1738 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_fanct1740 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_fonct270 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_fonct570 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_fonct320 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_fonct340 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_fonct580 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_definition0 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_set_in_lisIngnoreEnd2004 = new BitSet(new ulong[]{0xFFFFFFFFFFDFFFF2UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_set_in_lisIngnoreBeginSemiColon2031 = new BitSet(new ulong[]{0xFFFFFFFFFFAFFFF2UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_definition_in_synpred1_GrammaireZ2Enu82 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_synpred3_GrammaireZ2Enu82 = new BitSet(new ulong[]{0xFFFFFFFFFFAFFFF2UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_ps_in_synpred3_GrammaireZ2Enu88 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_ID_in_synpred8_GrammaireZ2Enu168 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_24_in_synpred10_GrammaireZ2Enu174 = new BitSet(new ulong[]{0x0000000002000010UL});
    public static readonly BitSet FOLLOW_li_in_synpred10_GrammaireZ2Enu178 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_synpred10_GrammaireZ2Enu181 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_22_in_synpred11_GrammaireZ2Enu187 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_synpred12_GrammaireZ2Enu192 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_synpred14_GrammaireZ2Enu192 = new BitSet(new ulong[]{0xFFFFFFFFFFAFFFF2UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_ps_in_synpred14_GrammaireZ2Enu197 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_typ_in_synpred17_GrammaireZ2Enu258 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_synpred18_GrammaireZ2Enu263 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_synpred20_GrammaireZ2Enu263 = new BitSet(new ulong[]{0xFFFFFFFFFFAFFFF2UL,0x0000000007FFFFFFUL});
    public static readonly BitSet FOLLOW_ps_in_synpred20_GrammaireZ2Enu268 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_definition_in_synpred21_GrammaireZ2Enu337 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_li_in_synpred25_GrammaireZ2Enu373 = new BitSet(new ulong[]{0x0000000000000020UL});
    public static readonly BitSet FOLLOW_Sep_in_synpred25_GrammaireZ2Enu376 = new BitSet(new ulong[]{0x000000C665800140UL});
    public static readonly BitSet FOLLOW_typ_in_synpred25_GrammaireZ2Enu384 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_23_in_synpred25_GrammaireZ2Enu393 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_26_in_synpred25_GrammaireZ2Enu401 = new BitSet(new ulong[]{0x0000000001000000UL});
    public static readonly BitSet FOLLOW_24_in_synpred25_GrammaireZ2Enu403 = new BitSet(new ulong[]{0x000000C661000140UL});
    public static readonly BitSet FOLLOW_typ_in_synpred25_GrammaireZ2Enu409 = new BitSet(new ulong[]{0x0000000002000000UL});
    public static readonly BitSet FOLLOW_25_in_synpred25_GrammaireZ2Enu411 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_structsimple_in_synpred27_GrammaireZ2Enu461 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_28_in_synpred28_GrammaireZ2Enu469 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_32_in_synpred32_GrammaireZ2Enu493 = new BitSet(new ulong[]{0x0000008460000100UL});
    public static readonly BitSet FOLLOW_typecomp_in_synpred32_GrammaireZ2Enu495 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_28_in_synpred33_GrammaireZ2Enu506 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_32_in_synpred34_GrammaireZ2Enu502 = new BitSet(new ulong[]{0x0000004001000000UL});
    public static readonly BitSet FOLLOW_structsimple_in_synpred34_GrammaireZ2Enu504 = new BitSet(new ulong[]{0x0000000010000002UL});
    public static readonly BitSet FOLLOW_28_in_synpred34_GrammaireZ2Enu506 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_32_in_synpred35_GrammaireZ2Enu511 = new BitSet(new ulong[]{0x0000000000000040UL});
    public static readonly BitSet FOLLOW_Types_in_synpred35_GrammaireZ2Enu513 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_structsimple_in_synpred39_GrammaireZ2Enu545 = new BitSet(new ulong[]{0x0000000000000002UL});
    public static readonly BitSet FOLLOW_36_in_synpred51_GrammaireZ2Enu865 = new BitSet(new ulong[]{0x0000000000000010UL});
    public static readonly BitSet FOLLOW_ID_in_synpred51_GrammaireZ2Enu869 = new BitSet(new ulong[]{0x0000000000000002UL});

}
}